我对嵌套属性有一个奇怪的问题..不确定这是否是设计的?当我做的时候
@Html.EditorFor(model => model.Name)
帖子工作,并填充模型。当我改为
时@Html.EditorFor(model => model.Detail.Name)
model.Detail.Name在帖子上为空。我需要做些什么特别工作吗?
答案 0 :(得分:1)
那应该有用。我不能责备。
型号:
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个属性被正确绑定。
答案 1 :(得分:0)
如果您使用的是EntityFramework,则应将该子项包含在查询中。
例如:
public MyClass getById(int id){
return DbSet.Include(q => q.Detail).SingleOrDefault(q => q.Id == id);
}
然后,当您致电您的模型时,将包含详细信息。所以你可以使用Name.Detail.Name。