EDIT: David Ruttkaのおかげで、私はMvc3のRTMリリースからLabelExtensions.csを見て、それを理解することができました。MVC3拡張メソッド<TModel、TValue>
フィールド名: 文字列フィールド= ExpressionHelper.GetExpressionText(式); BarTypeEnum barType =((フー)html.ViewData.Model:Fooの 、私はモデルで得ることができます:モデルの場合
、私はTModelのヘルパー 用としてキャストしたいモデルを指定するために必要な).BarType;
以下のソースを私のために更新しました。
/EDIT
私はFoo.BarTypeとhtmlから渡されたのFooのフィールドの名前に基づいて、文字列値を返すためにMvc3にLabelForに似たHTMLヘルパー関数を作成しようとしています。
以下の関数FooLabelForで、モデル名とフィールド名を関数に渡すにはどうすればよいですか?
System.Web.Mvc.HtmlLabelForのソースを検索しましたが、Mvc3のソースコードで見つけられませんでした。
//model class
public class Foo
{
public string Bar { get; set; }
public BarTypeEnum BarType { get; set; }
}
//html helper class
public static class HtmlHelpers {
public static string FooLabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression) where TModel:Foo
{
BarTypeEnum barType = ExpressionHelper.GetExpressionText(expression);
string field = ((Foo)html.ViewData.Model).BarType;
return GlobalizeText(enumHelper.stringvalue(barType), field);
}
}
//html
@model Foo
<div>@Html.FooLabelFor(m => m.Bar)</div>
FWIW 'LabelFor'は' LabelExtensions'クラスにあります。 '\ src \ SystemWebMvc \ Mvc \ Html \ LabelExtensions.cs' –
あなたは実際にここで質問していません。 – Robaticus
@DavidRuttka - codeplexのソースコードブラウザ:https://aspnet.codeplex.com/SourceControl/changeset/view/77537およびソースコードダウンロードにはLabelExtensions.csが含まれていません。私はそれをどこからダウンロードできるのか知っていますか? – StormRider01