如何在 Index.cshtml MVC3 上显示两个 Partials 视图数据?
Posted
技术标签:
【中文标题】如何在 Index.cshtml MVC3 上显示两个 Partials 视图数据?【英文标题】:How to show two Partials view data on Index.cshtml MVC3? 【发布时间】:2012-04-13 07:03:00 【问题描述】:我在 mvc3 中创建了一个 web 应用程序并创建了两个局部视图 一个具有控制两个下拉列表。 第二个有 webgrid,它显示来自数据库的数据。
partialview1.cshtml
@model Mapping.Models.SecurityIdentifierMapping
@using (Html.BeginForm("Mapping", "Home"))
@Html.DropDownList("SecurityID", Model.PricingSecurityID, "-- Select SecurityID --")
<br />
@Html.DropDownList("CUSIPID", Model.PricingSecurityID, "-- Select CUSIPID --")
<br />
<button type="submit">Map</button>
partialview2.cshtml
@model IEnumerable<Mapping.Models.SecurityIdentifierMapping>
@
ViewBag.Title = "Mapping";
WebGrid grid = null;
if (Model.Count() > 0 )
grid = new WebGrid(source: Model,
defaultSort: "Id",
canPage: true,
canSort: true,
rowsPerPage:20);
<h2>Mapping</h2>
@if (grid != null)
@grid.GetHtml(
tableStyle: "grid",
headerStyle: "head",
alternatingRowStyle: "alt",
columns: grid.Columns(
grid.Column("", header: null, format: @<text>@Html.ActionLink("Edit", "Edit", new id = (int)item.id ) @Html.ActionLink("Delete", "Delete", new id = (int)item.id )</text>),
grid.Column("PricingSecurityID"),
grid.Column("CUSIP")
)
)
<br />
<p>
@Html.ActionLink("Back", "Index")
</p>
in index.cshtml
<div>
@Html.Partial("_ControlsPartial",)
</div>
<div>
@Html.Partial("_WebGridPartial")
</div>
inside Indexcontroller.cs in Index()
public ActionResult Index()
//FOR POPULATE DROPDOWN
//SecurityIdentifierMapping objModel = new SecurityIdentifierMapping();
//objModel.PricingSecurityID = objRepository.GetPricingSecurityID();
//objModel.CUSIP = objRepository.GetCUSIP();
//return View(objModel);
//FOR DISPLAY DATA IN WEBGRID
return View(dbContext.SecurityIdentifierMappings);
这里的问题是webgrid partial view
有@model IEnumerable<Mapping.Models.SecurityIdentifierMapping>
和
controlpartilview
拥有@model Mapping.Models.SecurityIdentifierMapping
那么我如何创建一个 VIEWMODEL.cs 一个新的类,它将有两个模型,我如何在 INDEX(() 中写入它,以便该方法也将填充下拉菜单并在 WEBGRID 中显示数据?
【问题讨论】:
【参考方案1】:为什么不创建一个包含两个属性的自定义视图模型类:
public class SecurityIdentifierMappingViewModel
public IEnumerable<SecurityIdentifierMapping> MappingList get; set;
public SecurityIdentifierMapping Mapping get; set;
然后您可以将此自定义视图模型传递给索引视图和相应的属性作为每个部分的视图模型
编辑
您的索引操作将如下所示:
public ActionResult Index()
// single mapping
var mapping = new SecurityIdentifierMapping();
maping.PricingSecurityID = objRepository.GetPricingSecurityID();
mapping.CUSIP = objRepository.GetCUSIP();
var viewModel = new SecurityIdentifierMappingViewModel
Mapping = mapping,
MappingList = dbContext.SecurityIdentifierMappings.ToList()
;
return View(viewModel);
在Index.cshtml
:
@model SecurityIdentifierMappingViewModel
<div>
@Html.Partial("_ControlsPartial", Model.Mapping)
</div>
<div>
@Html.Partial("_WebGridPartial", Model.MappingList)
</div>
【讨论】:
Stack Overflow is not a Code Writing, Tutorial or Consulting Service以上是关于如何在 Index.cshtml MVC3 上显示两个 Partials 视图数据?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 ASP.NET MVC3 区域和 Razor 视图会产生此错误?