4
我有一個使用複雜類型作爲屬性的模型。在ASP.NET MVC3中顯示覆雜類型RC2
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; }
}
}
當我開始創建業務模型的表單時,Position屬性未顯示。我敢肯定複雜類型默認顯示在MVC2中。假設這可能是在MVC3交換機我嘗試以下步驟無濟於事:
- 裝飾與
ScaffoldColumn(true)
屬性的位置屬性。 - 在Views \ Shared \ EditorTemplates中創建了Position.cshtml視圖。
我目前的解決方法是將我自定義的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>
}
所以問題是:
- 有默認的行爲改變還是我失去了一些東西?
- 有沒有更好的方法來打開復雜類型的可見性?
- 是否可以訪問ASP.NET MVC3中的默認模板?
富
謝謝@jfar,但是「> 1」是我目前正在使用的解決方法,與自定義模板(Position.cshtml)結合使用。新的默認Object.cshtml中必須有其他內容防止複雜類型。 – kim3er 2010-12-15 13:13:10
@ kim3er - 所以你的說法改變> 8283不渲染位置模板? – jfar 2010-12-15 13:26:23
不,我說的是> 1,使用附加到原始問題的模板。 – kim3er 2010-12-15 13:34:36