如何获取输入的名称,如mvc html HiddenFor

时间:2011-07-13 17:42:43

标签: c# asp.net-mvc-3

我想写一个类似于HiddenFor的HtmlHelper扩展方法。不同之处在于我想控制value属性的内容以及额外的属性。我想我可以看看MVC的源代码,就像它的开源和所有。但是,除非我是盲目的,否则看起来像HiddenFor,TextBoxFor等强类型辅助方法不包含在源代码中。

方法签名使用Expression>表达

考虑到表达式如何获得HiddenFor所具有的name属性的相同值?

1 个答案:

答案 0 :(得分: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 metadata = ModelMetadata.FromLambdaExpression(expression,htmlHelper.ViewData)