2014-02-11 62 views
2

我有這樣與性能的型號:數據類型MVC空

[DataType(DataType.MultilineText)] 
[MaxLength(512)] 
public string Description 
{ 
    get 
    { 
     this.OnReadingDescription(ref _description); 
     return _description; 
    } 
    set 
    { 
     this.OnDescriptionChanging(ref value); 
     this._description = value; 
     this.OnDescriptionChanged(); 
    } 
} 

和這樣一個觀點:

@using AspMvcBase.Bootstrap 
@model NpoDb.Presentation.Web.Models.Media 
@Html.EditForm(); 

EditForm是一個自定義的HtmlHelper擴展,它使得在視圖模型的每個屬性。 這部分工作真的很好,但我想渲染一些屬性不同,所以我添加了[DataType(DataType.MultilineText)]屬性。

我想現在在我的HtmlHelper中測試是否存在MultilineText的屬性。

modelMetadata.DataTypeName.Equals(DataType.EmailAddress.ToString()) 

但問題是DataTypeName爲null。即使我在View中查看它是空的。

這是我發現的更好的資源之一。 Brad Wilson MVC2 Template

但我不明白爲什麼它不起作用在我的情況。

所以基本的問題是:我如何訪問HtmlHelper中的屬性?

我真的很感謝一些幫助。 :)

+0

你如何獲得的* modelMetadata *? – thepirat000

+0

在EditForm擴展我有這樣一個循環: 的foreach(在helper.ViewData.ModelMetadata.Properties VAR道具) { 「這使得我需要的屬性查看代碼」} – Unavi

回答

1

如果你試圖讓你的模型的屬性的屬性,你可以這樣做:

public static string EditForm(this HtmlHelper helper) 
{ 
    var model = helper.ViewData.Model; 
    var dataType = model 
     .GetType() 
     .GetProperty("Description") 
     .GetCustomAttribute<DataTypeAttribute>() 
     .DataType; 
    ... 
} 
+0

非常感謝您的幫助: )我的問題的解決方案是我運行ModelMetadata的屬性,因爲我需要一些信息。在循環中,我使用了你的消息屬性PropertyInfo propertyInfo = helper.ViewData.Model.GetType()。GetProperty(modelMetadata.PropertyName).GetCustomAttribute (); 獲取屬性。 – Unavi

+0

奇怪的是,我有我的老師的expample項目,並通過他的DataTypeName包含屬性信息,但因爲我們都無法弄清楚它爲什麼不通過我的soloution工作。這似乎是解決這個問題的方法:) – Unavi

相關問題