如何获得输入的名称,如mvc's html's HiddenFor

本文关键字:HiddenFor html 输入 何获得 mvc | 更新日期: 2023-09-27 18:02:13

我想写一个类似于HiddenFor的HtmlHelper扩展方法。不同之处在于,我想要控制进入value属性的内容,并附加一个额外的属性。我想我可以看看MVC的源代码,因为它是开源的。但是,除非我是盲人,否则似乎强类型的助手方法(如HiddenFor、TextBoxFor等)不包括在源代码中。

方法签名使用Expression> Expression。

给定表达式,我如何获得与HiddenFor相同的name属性值?

如何获得输入的名称,如mvc's html's HiddenFor

但是,除非我看不清,强类型帮助器似乎方法,如HiddenFor, TextBoxFor等,不包括在源代码

所有内容都包含在源代码中,只需下载并查看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(表情,htmlHelper.ViewData)