我有一个使用复杂类型作为属性的模型。
namespace Web.Models {
public class Business : IModel {
[Key, HiddenInput(DisplayValue = false)]
public Guid ID { get; set; }
public Position Position { get; set; }
public bool Active { get; set; }
public ICollection<Comment> Comments { get; set; }
public Business() {
ID = Guid.NewGuid();
Position = new Position();
}
}
public class Position {
public double Latitude { get; set; }
public double Longitude { get; set; }
}
}
当我创建Business模型的一种形式时,未显示Position属性。我确信MVC2中默认显示复杂类型。假设这可能是MVC3中的一个开关,我尝试了以下步骤无济于事:
ScaffoldColumn(true)
属性修饰了Position属性。我目前的解决方法是将我的自定义Object.ascx从MVC2转换为MVC3 Razor Object.cshtml。我的犹豫是,我很自信我的自定义Object.ascx是基于原版的Brad Wilson博客。
@if (ViewData.TemplateInfo.TemplateDepth > 1) {
@ViewData.ModelMetadata.SimpleDisplayText
}
else {
<div class="editor">
@foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForEdit && !ViewData.TemplateInfo.Visited(pm))) {
if (prop.HideSurroundingHtml) {
@Html.Editor(prop.PropertyName)
}
else {
<div class="field">
@(prop.IsRequired ? "*" : "")
@Html.Label(prop.PropertyName)
@Html.Editor(prop.PropertyName)
@Html.ValidationMessage(prop.PropertyName)
</div>
}
}
</div>
}
所以问题是:
富
答案 0 :(得分:0)
默认的Object.ascx模板只显示对象图的一个级别。
顶部有一条线,用于检查深度是否为&gt; 1然后在渲染时保释。
<% } else if (ViewData.TemplateInfo.TemplateDepth > 1) { %>
更改为:
<% } else if (ViewData.TemplateInfo.TemplateDepth > 99) { %>
如果完全删除它。