编辑器模板在MVC3类中没有绑定

时间:2011-04-07 06:45:54

标签: asp.net asp.net-mvc-3 razor

您好我有一个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,但不确定我缺少什么。另外我该如何调试此问题?

请帮忙!

3 个答案:

答案 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)

你应该看看这个页面。我想这就是你想要的。基本上说你必须为模型创建一个自定义模板。这是非常彻底的。

http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-4-custom-object-templates.html

希望这可以帮助你

相关问题