Asp.net mvc 2 如果使用自定义对象,Html.EditorFor不会呈现任何内容?

Asp.net mvc 2 如果使用自定义对象,Html.EditorFor不会呈现任何内容?,asp.net-mvc-2,Asp.net Mvc 2,升级到asp.net mvc 2 rc 2后,似乎无法再编辑自定义对象了?我对自定义对象使用这种方法,如下所示: 我的模型只有一个属性,但继承自抽象基类 公共类页面:ContentItem{ [数据类型(DataType.multilitext)] 公共虚拟字符串mainitro{get;set;}//此属性呈现正确 [DisplayFormat(NullDisplayText="(null value)")] public virtual DetailCollection Ta

升级到asp.net mvc 2 rc 2后,似乎无法再编辑自定义对象了?我对自定义对象使用这种方法,如下所示:

我的模型只有一个属性,但继承自抽象基类 公共类页面:ContentItem{ [数据类型(DataType.multilitext)] 公共虚拟字符串mainitro{get;set;}//此属性呈现正确

    [DisplayFormat(NullDisplayText="(null value)")]
    public virtual DetailCollection Tags { get; set; }
}

我的控制器看起来像这样

    public ActionResult Edit(string pagePath) {
        var page = _repository.GetByUrlSegment(pagePath);
        return View(page.EditViewName, new DashboardModel(page, RootPages));
    }
<% using (Html.BeginForm("update","Dashboard", FormMethod.Post, new { name = "editForm" } )) %>
<% { %>
    <div>
        <%=Html.EditorFor(model => model.CurrentItem) %>
        <div class="editor-button">
            <input type="submit" value="Save" />
        </div>
    </div>            
<% } %>
我的观点是这样的

    public ActionResult Edit(string pagePath) {
        var page = _repository.GetByUrlSegment(pagePath);
        return View(page.EditViewName, new DashboardModel(page, RootPages));
    }
<% using (Html.BeginForm("update","Dashboard", FormMethod.Post, new { name = "editForm" } )) %>
<% { %>
    <div>
        <%=Html.EditorFor(model => model.CurrentItem) %>
        <div class="editor-button">
            <input type="submit" value="Save" />
        </div>
    </div>            
<% } %>

model.CurrentItem)%%>

也许最好将其作为空格分隔的字符串公开给视图,并将集合排除在视图中显示。或者,您也可以为希望如何显示集合定义特定模板。我不清楚MVC如何才能决定以其他方式显示什么

尝试以下方法:

        [ShowForDisplay(false)]
        [ShowForEdit(false)]
        public virtual DetailCollection Tags { get; set; }

        public virtual string TagList
        {
             get
             {
                 if (tags == null) return "(null value)";

                 // assumes DetailCollection implements IEnumerable<string>
                 return string.Join( " ", tags.Select( t => t).ToArray() );
             }
             set
             {
                  tags = new DetailCollection( value.Split( new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries )
                                                    .Select( s => s.Trim() ) );
             }
         }
[ShowForDisplay(false)]
[ShowForEdit(错误)]
公共虚拟详细信息集合标记{get;set;}
公共虚拟字符串标记列表
{
得到
{
if(tags==null)返回“(null值)”;
//假设DetailCollection实现IEnumerable
返回string.Join(“,tags.Select(t=>t.ToArray());
}
设置
{
tags=new DetailCollection(value.Split(新字符[]{''},StringSplitOptions.RemoveEmptyEntries)
.选择(s=>s.Trim());
}
}

也许最好将其作为空格分隔的字符串公开给视图,并将集合排除在视图中显示。或者,您也可以为希望如何显示集合定义特定模板。我不清楚MVC如何才能决定以其他方式显示什么

尝试以下方法:

        [ShowForDisplay(false)]
        [ShowForEdit(false)]
        public virtual DetailCollection Tags { get; set; }

        public virtual string TagList
        {
             get
             {
                 if (tags == null) return "(null value)";

                 // assumes DetailCollection implements IEnumerable<string>
                 return string.Join( " ", tags.Select( t => t).ToArray() );
             }
             set
             {
                  tags = new DetailCollection( value.Split( new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries )
                                                    .Select( s => s.Trim() ) );
             }
         }
[ShowForDisplay(false)]
[ShowForEdit(错误)]
公共虚拟详细信息集合标记{get;set;}
公共虚拟字符串标记列表
{
得到
{
if(tags==null)返回“(null值)”;
//假设DetailCollection实现IEnumerable
返回string.Join(“,tags.Select(t=>t.ToArray());
}
设置
{
tags=new DetailCollection(value.Split(新字符[]{''},StringSplitOptions.RemoveEmptyEntries)
.选择(s=>s.Trim());
}
}

你能再发一些代码吗。。。由于you is quorint的博客不使用EditorFor。因此,我现在用更多的代码更新了我的问题。看起来这就是它的工作原理。我在Scott Guthries的博客中发现了这一点,新的模板化Html.EditorFor()和Html.DisplayFor()助手方法现在自动构建简单属性(默认情况下不呈现复杂的子属性)。那么,我如何才能再次启用此功能?最新版本的asp.net mvc 2中是否有关于此问题的任何更改?能否发布更多代码。。。由于you is quorint的博客不使用EditorFor。因此,我现在用更多的代码更新了我的问题。看起来这就是它的工作原理。我在Scott Guthries的博客中发现了这一点,新的模板化Html.EditorFor()和Html.DisplayFor()助手方法现在自动构建简单属性(默认情况下不呈现复杂的子属性)。那么,如何再次启用此功能?最新版本的asp.net mvc 2中是否对此问题有任何更改?我正在考虑使用UIHint属性指定要使用的模板。我正在考虑使用UIHint属性指定要使用的模板。