我尝试在局部视图中初始化DataView.Model。页面工作正常,但当我返回控制器时模型为空。
一些帮助(解决方案或解释为什么它不对)。 谢谢!
代码:
在我的部分视图中:
ViewData.Model = new DiamondPrint();
ViewData.Model.Diamond = m_db.DiamondInfoes.Where(di => di.Id == id).SingleOrDefault();
在我的控制器中:
public ActionResult Preview(DiamondPrint d)//the properties in d = null
{
return View(d);
}
答案 0 :(得分:1)
这是一篇关于模型绑定的精彩文章。 Model Binding确保在html输入字段中设置name属性。
答案 1 :(得分:1)
查看您所包含的代码,似乎您在部分视图中初始化ViewData.Model,但在控制器操作中,您期望默认模型绑定器重新创建模型。要使模型活页夹重新创建模型,您需要创建一个强类型视图。
例如:
<强>控制器:强>
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(IndexModel model)
{
return View();
}
<强>型号:强>
public class IndexModel
{
public string MyValue { get; set; }
}
查看:强>
注意顶部的@model定义(忽略命名空间)
@model MvcApplication14.Models.IndexModel
@using (Html.BeginForm())
{
@Html.Partial("_IndexPartial", Model)
<input type="submit" value="click"/>
}
部分视图
@model MvcApplication14.Models.IndexModel
@Html.EditorFor(m => m.MyValue)