【问题标题】:MVC3 Editor Template for List Not Populating未填充列表的 MVC3 编辑器模板
【发布时间】:2011-09-27 19:59:04
【问题描述】:

问题:当我为 UserModel 加载 EditorTemplate 时,UserRoles 列表不会生成 UserRole 编辑器列表。

我的模型:

    public class UserSearchModel
{
    [ScaffoldColumn(false)]
    public Guid UserId { get; set; }
    [DisplayName("User Name")]
    public string UserName { get; set; }
    [DisplayName("User Roles")]
    public UserRoles UserRoles { get; set; }
}

    public partial class UserRoles : List<UserRole>
{

}

    public class UserRole
{
    public string RoleName { get; set; }
    public bool IsChecked { get; set; }
    public string Description { get; set; }
}

我的编辑器模板:

@model eGate.BackOffice.WebClient.Model.UserModel
@Html.LabelFor(m=>m.UserName)
@Html.EditorFor(m=>m.UserName)
<h1>roles</h1>
@Html.EditorFor(m=>m.UserRoles)



@model eGate.BackOffice.WebClient.Model.UserRole
@Html.LabelFor(m=>m.RoleName)
@Html.LabelFor(m=>m.IsChecked)
@Html.CheckBoxFor(m=>m.IsChecked)
@Html.LabelFor(m=>m.Description)

实际输出如下:

用户名 [ someuser ]

角色

预期输出:

用户名 [ someuser ]

角色

角色1 [x] 已选中 1的角色

角色2 [x] 已选中 2的角色

角色3 [x] 已选中 3 的角色

【问题讨论】:

  • 您需要提供更多信息。你的 EditorTamplate 叫什么,你把它放在哪里了?

标签: asp.net-mvc-3 editortemplates mvc-editor-templates


【解决方案1】:

您应该只创建类型 List 而不是派生自己的类型。

【讨论】:

    【解决方案2】:

    我认为问题在于将UserRoles 定义为一个单独的类。尝试将UserSearchModel 类中的属性UserRoles 更改为:

    public List<UserRole> UserRoles { get; set; }
    

    MVC 正在为UserRoles 类搜索模板。由于模板是针对UserRole 类的,MVC 找不到任何模板。

    更新

    另外,我忽略了您将 EditorFor 用于 UserRoles 模型。你应该像这样使用EditorForModel

    @Html.EditorForModel(m => m.UserRoles)
    

    【讨论】:

    • 只是为了不排除任何可能性,我试了一下。但仍然没有骰子。
    【解决方案3】:

    这个问题看起来更有可能是由于 Telerik mvc 网格的弹出窗口提供了 User EditorTemplate。

    我在网格弹出窗口之外进行了测试,发现模板可以按预期工作。我将关闭此问题并在另一个条目中重新提出正确的问题。

    【讨论】:

    • 我在编辑器模板和 Telerik 方面也遇到了一些问题,在网格内引用时它没有生成模板
    猜你喜欢
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    相关资源
    最近更新 更多