2011-07-13 14 views
4

HiddenForと同様のHtmlHelper拡張メソッドを記述したいと思います。違いは、value属性に何が入るのか、余分な属性があるのか​​を制御したいということです。私はMVCのソースコードを見てみることができたと思っていました。しかし、私が目が見えない限り、HiddenFor、TextBoxForなどの強く型付けされたヘルパーメソッドは、ソースコードに含まれていないようです。mvcのhtmlのような入力の名前を取得する方法HiddenFor

メソッドシグネチャは、Expression>式を使用します。

HiddenForと同じname属性の値を取得するにはどうすればよいですか?

答えて

4

しかし、私は盲目だ場合を除き、などHiddenFor、TextBoxForなど 方法は、 ソースコードに含まれていない、強く型付けされたヘルパーこと

すべては、ソースコードに含まれて表示されます、ちょうどdownloadそれはInputExtensions.csを見てください。

public static MvcHtmlString FooBarFor<TModel, TProperty>(
    this HtmlHelper<TModel> htmlHelper, 
    Expression<Func<TModel, TProperty>> expression 
) 
{ 
    var name = ExpressionHelper.GetExpressionText(expression); 
    var fullHtmlFieldName = htmlHelper 
     .ViewContext 
     .ViewData 
     .TemplateInfo 
     .GetFullHtmlFieldName(name); 

    // do something with the name 
    ... 
} 

ModelMetadataメタデータ= ModelMetadata.FromLambdaExpression(表現、htmlHelper.ViewData)

+0

どのように奇数:だから名前を取得する

。あなたは正しいです。ダウンロードした場合はソースコードにありますが、コードプレックスでブラウズしている場合は表示されません。 http://aspnet.codeplex.com/SourceControl/changeset/view/68345#288010 –

+2

@Mr Bell、codeplexのブラウズ元が古いので、あなたはそれに頼るべきではありません。 –

+0

それは確かに知って良いです。私は他の違いを見つけて、コード・フルソース全体が古いと仮定しました。ダウンロードとブラウズ機能が異なることは私には決してありませんでした –

関連する問題