我的目标是创建一个局部视图,它可以跨MVC应用程序在许多其他视图中使用。此部分视图将接受来自父视图的模型的数据,以用作其模型。
我的问题是,我不知道如何将这些数据从父视图的模型发送到部分视图。下面是一些代码:
父视图的模型类:
public class TestModel
{
public int ID { get; set; }
public string Name { get; set; }
public GlobalPartialView GPV { get; set; }
}分部视图的模型类:
public class GlobalPartialView
{
public string PartialViewString { get; set; }
}父视图:
@model TestMVC_CRUD.Models.TestModel
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<div>
<div>ID: @Model.ID</div>
<div>Name: @Model.Name</div>
</div>
@Html.Partial("_GlobalPartialView", Model.GPV);局部视图:
@model TestMVC_CRUD.Models.GlobalPartialView
@{
ViewBag.Title = "View1";
}
<h2>View1</h2>
<div>Value: @Model.PartialViewString</div>此代码不起作用。局部视图将不接受Model.GPV作为其模型。
如何将子对象从父视图的模型发送到局部视图以用作其模型?此外,如果有更好的方法来实现这一点,我很想听听。
发布于 2014-06-11 04:35:22
这段代码应该可以工作。看起来您在呈现父视图时忘记了填充主视图模型的GPV属性。你只是得到了一个NRE,因为你的局部视图正在访问@Model.PartialViewString。
确保呈现父视图的控制器操作实际上填充了GPV属性:
var model = new TestModel();
model.GPV = new GlobalPartialView();
model.GPV.PartialViewString = "The foo bar";
return View(model);https://stackoverflow.com/questions/24150075
复制相似问题