如何在MVC中的单个视图中使用多个模型 [英] How to use multiple models in single views in MVC

查看:96
本文介绍了如何在MVC中的单个视图中使用多个模型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的朋友们,



我正在开发mvc中的采购订单屏幕..我有两个型号'MRHdr'和'MRDtl'如何在单个中使用两个型号视图。我正在尝试3天请帮助我...



例如。文本框值保存在'MRHdr'中,网格值保存在'MRDtl'中



我尝试过:



型号:公共级MRHdr

{

[Key]

public int Id {get;组; }

public string MRNo {get;组; }

public DateTime MRDate {get;组; }

public string备注{get;组; }

}

公共类MRDtl

{

[Key]

public int Id {get;组; }

public string MRNo {get;组; }

公共字符串IRateCode {get;组; }

公共字符串ItemCode {get;组; } $ / $
public int QtyRequested {get;组; }

}

查看型号:

公共类VwModel

{

public MRHdr MRHdr {get;组; }

public MRDtl MRDtl {get;组; }

}

控制器:

public ActionResult Create()

{

MRHdr objMRHdr = new MRHdr(){MRNo =,MRDate = DateTime.Now};

MRDtl objMRDtl = new MRDtl(){IRateCode =,ItemCode = ,QtyRequested = 0};

List model = new List();

model.Add(new VwModel {MRHdr = objMRHdr,MRDtl = objMRDtl});



返回查看(型号);

}



查看:

@model Telecom.ViewModel.VwModel

@using(Html.BeginForm(Create,MatReq,FormMethod.Post))< br $>
{

Dear Frnds,

I am developing Purchase order screen in mvc.. I have two models 'MRHdr' and 'MRDtl' How to use two models in single view. I am trying 3 days please help me...

Eg. Textbox values save in 'MRHdr' and grid values save in 'MRDtl'

What I have tried:

Models: public class MRHdr
{
[Key]
public int Id { get; set; }
public string MRNo { get; set; }
public DateTime MRDate { get; set; }
public string Remarks { get; set; }
}
public class MRDtl
{
[Key]
public int Id { get; set; }
public string MRNo { get; set; }
public string IRateCode { get; set; }
public string ItemCode { get; set; }
public int QtyRequested { get; set; }
}
View Model:
public class VwModel
{
public MRHdr MRHdr { get; set; }
public MRDtl MRDtl { get; set; }
}
Controller:
public ActionResult Create()
{
MRHdr objMRHdr = new MRHdr() { MRNo = "", MRDate = DateTime.Now };
MRDtl objMRDtl = new MRDtl() { IRateCode = "", ItemCode = "", QtyRequested = 0 };
List model = new List();
model.Add(new VwModel { MRHdr = objMRHdr, MRDtl = objMRDtl });

return View(model);
}

View:
@model Telecom.ViewModel.VwModel
@using (Html.BeginForm("Create", "MatReq", FormMethod.Post))
{



@ {Html.RenderPartial(_ MRHdrs,Model.MRHdr);}

@ {Html.RenderPartial(_ MRDtls,Model.MRDtl);}


@{Html.RenderPartial("_MRHdrs",Model.MRHdr);}
@{Html.RenderPartial("_MRDtls", Model.MRDtl);}



}



部分查看:1

@model列表< Telecom.Models.MRDtl>



部分视图:2

@model Telecom.Models.MRHdr


}

Partial View:1
@model List< Telecom.Models.MRDtl >

Partial View:2
@model Telecom.Models.MRHdr

推荐答案

已经写了一篇文章解释了许多实现这个目标的方法。



Google搜索
An article has already been written explaining many ways of accomplish this.

With a Google search of
mvc multiple models c#

,很容易找到所需的信息。您可以自己尝试: Google [ ^ ]



ASP.NET MVC 4 / MVC 5中视图中的多个模型 [ ^ ]



这个问题也已被问到在Stack Overflow上:`

asp.net mvc - 一个多个模型视图 - 堆栈溢出 [ ^ ]



我通常会制作另一个包含两个模型作为属性的模型n为每个部分创建部分视图。如果每个部分基本上是独立的(例如将2个页面合并为一个),这个工作很好。

, it was easy to find the information you need. You can try that yourself: Google[^]

Multiple Models in a View in ASP.NET MVC 4 / MVC 5[^]

That question also has already been asked on Stack Overflow:`
asp.net mvc - Multiple models in a view - Stack Overflow[^]

I would usually make another model that contains both models as properties and then create partial view for each part. This work well if each part are essentially independant (like combining 2 pages into one).


尝试这样的





try like this


public ActionResult Create()
       {
           MRHdr objMRHdr = new MRHdr() { /* initialise the properties*/ };
           MRDtl objMRDtl = new MRDtl() { /* initialise the properties*/  };
           VwModel model = new VwModel{ MRHdr = objMRHdr, MRDtl = objMRDtl };
           return View(model);
       }
       public ActionResult GetList()
       {
           MRHdr objMRHdr = new MRHdr() { /* initialise the properties*/ };
           MRDtl objMRDtl = new MRDtl() { /* initialise the properties*/  };
           List<VwModel> model = new List<VwModel>();
           model.Add( new VwModel{ MRHdr = objMRHdr, MRDtl = objMRDtl }); // sample
           model.Add(new VwModel { MRHdr = objMRHdr, MRDtl = objMRDtl }); // sample
           return View(model);
       }


为什么不使用两个局部视图并为每个部分视图使用一个模型。
Why not use two partial views and use one model for each.


这篇关于如何在MVC中的单个视图中使用多个模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆