2011-07-06 115 views
1

我想創建一個自定義asp.net mvc3幫手。創建自定義幫手Asp.net MVC 3

要使用該助手,我應該寫的語法像下面

@Html.DisplayMyCustomHelper(model => model.FullName) 

期望輸出

Full Name (Value Picked from model's Display attribute)= Current Value Of Property 

如:

public Class User 
{ 
     [Display(Name="Full Name")] 
     public string FullName{get;set;} 
} 

User = new User{FullName="Tom Cruise"}; 

裏面剃刀

@model User 
@Html.DisplayMyCustomHelper(model => model.FullName) 

預期輸出

全名=湯姆·克魯斯


我怎樣才能做到這一點?

+1

http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs這是很好的教程創造MVC –

回答

1
public static MvcHtmlString DisplayMyCustomHelper<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> expression) 
    { 
     const string format = "{0} = {1}"; 

     var metadata = ModelMetadata.FromLambdaExpression<TModel, TValue>(expression, htmlHelper.ViewData); 

     var model = metadata.Model; 

     var result = string.Format(format, metadata.DisplayName, model == null ? string.Empty : model.ToString()); 

     return MvcHtmlString.Create(result); 
    } 
+0

它的工作定製的幫手,我就接受它在幾個小時,只需在你的答案中進行一次修改,在string.format中將「metadata.DisplayName」替換爲「metadata.DisplayName ?? metadata.PropertyName」 –

+1

@Praveen man,每一段代碼都寫在堆棧溢出上,因爲答案不是直接複製並粘貼到您的生產環境中。大致的想法顯示在我的答案中,你可以自由地改變你想要的任何東西:) – archil

+0

他他,你是對的。你能告訴我如何做到這一點|如何通過方法「MyDisplayFor」中的模型的每個屬性循環查看=「@ Html.MyDisplayFor(m => m)」 –

相關問題