在升级到asp.net mvc 2 rc 2后,似乎无法再编辑自定义对象了?我使用这种方法http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-4-custom-object-templates.html和这样的自定义对象:
我的模型只有一个属性,但是继承自抽象基类 公共类页面:ContentItem { [数据类型(DataType.MultilineText)] public virtual string MainIntro {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>
<% } %>
答案 0 :(得分:1)
也许最好将此作为空格分隔的字符串公开给视图,并排除集合在视图中显示。或者,您可以为要显示集合的方式定义特定模板。我不清楚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() ) );
}
}