2011-07-06 31 views
1

カスタムasp.net mvc3ヘルパーを作成したいと思います。カスタムヘルパーを作成するAsp.net MVC 3

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

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

インサイドレイザー

そのヘルパーを使用するには、私が予想される出力

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

例:

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

以下のような構文を記述する必要があります210

@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

彼は彼です。これを行う方法を私に教えてください。ヘルパー内部ビュー= "@ Html.MyDisplayFor(m => m)"、メソッド "MyDisplayFor"内のモデルの各プロパティをループする方法 –

関連する問題