我有以下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中的Index Action中,我将视图模型传递给Index视图。
private eFormsEntities db = new eFormsEntities();
public ActionResult Index()
{
PrinterViewModel printerModel = new PrinterViewModel();
printerModel.Printers = from pt in db.PrinterMapping select pt;
return View(printerModel);
}
我的索引视图以下列方式调用部分视图(可能是错误的):
@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。 如何访问我传入的视图模型中的打印机?这甚至可能吗?
非常感谢大家。
答案 0 :(得分:2)
@{
new WebGrid(Model.Printers, "");
}
并且您还必须将模型传递到
中的部分视图中@Html.Partial("~/Views/Home/GridView.cshtml")
在第二个参数中。我想这个电话应该是
@Html.Partial("~/Views/Home/GridView.cshtml", Model)
答案 1 :(得分:2)
您的代码存在两个问题。
首先,你应该明确地传递你的模型:
@Html.Partial("~/Views/Home/GridView.cshtml", Model) @* explicitly pass the model in *@
然后,因为你已经在局部视图中的代码块中了..你不需要@符号.. Model
有一个大写的M。
new WebGrid(Model.Printers, "");
@model
是您的观看次数/部分观看次数的指令。将其视为“配置”命令。 Model
是一个实际的财产。它是传递给视图的对象..并且是您使用@model
指令指定的类型。