我有以下EF生成的数据模型:
public partial class PrinterMapping
{
public string MTPrinterID { get; set; }
public string NTPrinterID { get; set; }
public string Active { get; set; }
}然后我有了下面的视图模型:
public class PrinterViewModel
{
public PrinterMapping PrinterMapping;
public Exceptions Exceptions;
public IEnumerable<PrinterMapping> Printers;
}在HomeController中的索引操作中,我将视图模型传递给索引视图。
private eFormsEntities db = new eFormsEntities();
public ActionResult Index()
{
PrinterViewModel printerModel = new PrinterViewModel();
printerModel.Printers = from pt in db.PrinterMapping select pt;
return View(printerModel);
}我的Index视图在接近尾声时以以下方式调用部分视图(可能是错误的):
@Html.Partial("~/Views/Home/GridView.cshtml")我的GridView.cshtml看起来像这样:
@model AccessPrinterMapping.Models.PrinterViewModel
<h2> This is Where the Grid Will Show</h2>
@{
new WebGrid(@model.Printers, "");
}
@grid.GetHtml()我从http://msdn.microsoft.com/en-us/magazine/hh288075.aspx学到了WebGrid方法。
我的WebGrid代码行一点也不高兴,因为它不能识别该行中的@Model.如何访问我传入的视图模型中的打印机?这有可能吗?
非常感谢大家。
发布于 2013-12-04 18:01:02
@{
new WebGrid(Model.Printers, "");
}此外,您还必须将模型传递到
@Html.Partial("~/Views/Home/GridView.cshtml")在第二个参数中。我想这个电话应该是
@Html.Partial("~/Views/Home/GridView.cshtml", Model)发布于 2013-12-04 18:03:30
你的代码有两个问题。
首先,您应该像这样显式地传递您的模型:
@Html.Partial("~/Views/Home/GridView.cshtml", Model) @* explicitly pass the model in *@然后,因为您已经在局部视图中的代码块中..你不需要@符号..并且Model有一个大写的M。
new WebGrid(Model.Printers, "");@model是用于视图/部分视图的指令。可以把它看作是一个“配置”命令。Model是一个实际的属性。它是传递到视图中的对象。与您在@model指令中指定的类型相同。
https://stackoverflow.com/questions/20372171
复制相似问题