您好我有一个PersonName类,如下所示:
public class PersonName
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string MiddleName { get; set; }
}
我有一个UserCreateModel,由PersonName和其他属性组成,如下所示:
public class UserCreateModel
{
public PersonName FullName { get; set; }
public string UserName { get; set; }
...........
}
我在/Views/Shared/EditorTemplates/PersonName.cshtml中有一个看起来像这样的编辑器模板(剪裁下来):
@model PersonName
First: @Html.EditorFor(m => m.FirstName)
Last: @Html.EditorFor(m => m.LastName)
Middle: @Html.EditorFor(m => m.Middle)
然而,当我做(短版)时:
@model UserCreateModel
@{Html.BeginForm("Create", "User");}
@Html.EditorForModel()
@{Html.EndForm();}
PersonName不绑定到编辑器,根本不显示。我甚至尝试过UIHint,但不确定我缺少什么。另外我该如何调试此问题?
请帮忙!
答案 0 :(得分:2)
您有PersonName
班级(~/Views/Shared/EditorTemplates/PersonName.cshtml
)的编辑器模板,但不是主要型号UserCreateModel
的编辑器模板。因此,您需要为UserCreateModel
类编写编辑器模板并使用EditorForModel
或指定属性using EditorFor
,如下所示:
@model UserCreateModel
@using(Html.BeginForm("Create", "User"))
{
@Html.EditorFor(x => x.FullName)
}
答案 1 :(得分:0)
如果它是您使用的确切代码,我认为您应该使用m
更改lambda中的Model @model PersonName
First: @Html.EditorFor(m => m.FirstName)
Last: @Html.EditorFor(m => m.LastName)
Middle: @Html.EditorFor(m => m.Middle)
而不是Model.Firstname等
答案 2 :(得分:0)
你应该看看这个页面。我想这就是你想要的。基本上说你必须为模型创建一个自定义模板。这是非常彻底的。
希望这可以帮助你