我对嵌套属性有一个奇怪的问题..不确定这是否是设计使然?当我做
@Html.EditorFor(model => model.Name)
帖子有效并且模型被填充。当我改为
@Html.EditorFor(model => model.Detail.Name)
model.Detail.Name 在帖子上为空。我需要做些什么特别的事情才能让它工作吗?
我对嵌套属性有一个奇怪的问题..不确定这是否是设计使然?当我做
@Html.EditorFor(model => model.Name)
帖子有效并且模型被填充。当我改为
@Html.EditorFor(model => model.Detail.Name)
model.Detail.Name 在帖子上为空。我需要做些什么特别的事情才能让它工作吗?
那应该行得通。我无法复制。
模型:
public class ModelClass
{
public string Name { get; set; }
public DetailClass Detail { get; set; }
}
public class DetailClass
{
public string Name { get; set; }
}
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new ModelClass
{
Name = "model name",
Detail = new DetailClass
{
Name = "detail name"
}
};
return View(model);
}
[HttpPost]
public ActionResult Index(ModelClass model)
{
return Content(
string.Format(
"name: {0}, detail.name: {1}",
model.Name,
model.Detail.Name
)
);
}
}
看法:
@model ModelClass
@using (Html.BeginForm())
{
@Html.EditorFor(x => x.Name)
@Html.EditorFor(x => x.Detail.Name)
<button type="submit">OK</button>
}
2 个属性已正确绑定。
如果您使用的是 EntityFramework,则应在查询中包含子项。
例如:
public MyClass getById(int id){
return DbSet.Include(q => q.Detail).SingleOrDefault(q => q.Id == id);
}
然后,当您调用模型时,将包含详细信息。所以你可以使用 Name.Detail.Name。