0

我对嵌套属性有一个奇怪的问题..不确定这是否是设计使然?当我做

@Html.EditorFor(model => model.Name)

帖子有效并且模型被填充。当我改为

@Html.EditorFor(model => model.Detail.Name)

model.Detail.Name 在帖子上为空。我需要做些什么特别的事情才能让它工作吗?

4

2 回答 2

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 个属性已正确绑定。

于 2012-04-05T05:56:20.863 回答
0

如果您使用的是 EntityFramework,则应在查询中包含子项。

例如:

public MyClass getById(int id){
    return DbSet.Include(q => q.Detail).SingleOrDefault(q => q.Id == id);
}

然后,当您调用模型时,将包含详细信息。所以你可以使用 Name.Detail.Name。

于 2017-10-08T21:07:21.333 回答