我想写一个类似于HiddenFor的HtmlHelper扩展方法。不同之处在于我想控制value属性的内容以及额外的属性。我想我可以看看MVC的源代码,就像它的开源和所有。但是,除非我是盲目的,否则看起来像HiddenFor,TextBoxFor等强类型辅助方法不包含在源代码中。
方法签名使用Expression>表达
考虑到表达式如何获得HiddenFor所具有的name属性的相同值?
答案 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)