如何在MVC中的单个视图中使用多个模型 [英] How to use multiple models in single views in 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屋!