【问题标题】:Editor Template not binding in MVC3 class编辑器模板未绑定在 MVC3 类中
【发布时间】:2011-04-07 06:45:54
【问题描述】:

您好,我有一个如下所示的 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,但不确定我错过了什么。另外我该如何调试这个问题?

请帮忙!

【问题讨论】:

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


    【解决方案1】:

    您有一个 PersonName 类 (~/Views/Shared/EditorTemplates/PersonName.cshtml) 的编辑器模板,但没有 UserCreateModel 这是您的主要模型。因此,您需要为UserCreateModel 类编写一个编辑器模板并使用EditorForModel,或者像这样指定属性using EditorFor

    @model UserCreateModel
    @using(Html.BeginForm("Create", "User"))
    {
        @Html.EditorFor(x => x.FullName)  
    }
    

    【讨论】:

    • 谢谢达林,我现在就试试。但是默认的 Object.cshtml 不应该渲染这个模型并基于 UIHint 或数据类型递归地拾取 UserCreateModel 中的元素并相应地渲染吗?我问是因为类中其他基于字符串的属性,如电子邮件,工作正常。它与默认实现中的 TemplateDepth 有关系吗?抱歉,我是 MVC 新手,所以我可能会遗漏明显的内容。
    • 谢谢,这行得通。虽然我不确定为什么它没有被递归提取 - Brad Wilson 的博客文章似乎暗示了深度绑定。
    【解决方案2】:

    如果它是您使用的确切代码,我认为您应该使用 m 更改 lambda 中的模型

        @model PersonName
    
    First: @Html.EditorFor(m => m.FirstName) 
    Last: @Html.EditorFor(m => m.LastName) 
    Middle: @Html.EditorFor(m => m.Middle)
    

    而不是 Model.Firstname 等

    【讨论】:

    • 谢谢@archil,是的,它是 m.FirstName。在原帖中更正了。我的错。但这不是问题。
    • -1。这可能应该是一个评论;您没有对 OP 的问题提供任何真正的答案。
    【解决方案3】:

    你应该看看这个页面。我认为这是你想要的。基本上是说您必须为模型创建一个自定义模板。写得很透彻。

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

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多