Asp.net mvc 2 的Asp.net MVC标签
我有以下几点Asp.net mvc 2 的Asp.net MVC标签,asp.net-mvc-2,Asp.net Mvc 2,我有以下几点 名字 m、 Customer.Name.Forename)%%> 问题是,它被渲染为 名字 不是我想要的ofc 我想要一个扩展来正确呈现标签(即,使用具有输入id值的for=”“属性),在我开始编写自己的扩展之前,MVC 2中是否有任何东西可以本机执行此操作?m.Customer.Name.Forename)%%> m、 Customer.Name.Forename)%%> 以下将允许覆盖默认显示名称,使用以下选项的替代方法是使用[DisplayName]属性破坏您的模型 用法
名字
m、 Customer.Name.Forename)%%>
问题是,它被渲染为
名字
不是我想要的ofc
我想要一个扩展来正确呈现标签(即,使用具有输入id值的for=”“属性),在我开始编写自己的扩展之前,MVC 2中是否有任何东西可以本机执行此操作?m.Customer.Name.Forename)%%>
m、 Customer.Name.Forename)%%>
以下将允许覆盖默认显示名称,使用以下选项的替代方法是使用[DisplayName]
属性破坏您的模型
用法
m.Customer.Name.Forename,“名字”)%%>
代码
namespace System.Web.Mvc.Html
{
公共静态类标签扩展
{
公共静态MvcHtmlString LabelFor(此HtmlHelper html、表达式、字符串显示名)
{
返回LabelHelper(html、ModelMetadata.FromLambdaExpression(表达式、html.ViewData)、ExpressionHelper.GetExpressionText(表达式)、displayName);
}
内部静态MvcHtmlString LabelHelper(HtmlHelper html、ModelMetadata元数据、字符串htmlFieldName、字符串displayName)
{
string str=displayName??metadata.displayName??(metadata.PropertyName??htmlFieldName.Split(新字符[]{.'}).Last());
if(string.IsNullOrEmpty(str))
{
返回MvcHtmlString.Empty;
}
标记生成器=新标记生成器(“标签”);
Add(“for”,html.ViewContext.ViewData.TemplateInfo.getFullHtmlFieldDid(htmlFieldName));
builder.SetInnerText(str);
返回MvcHtmlString.Create(builder.ToString(TagRenderMode.Normal));
}
}
}
@Alex哦,是的,这是一个糟糕的主意,干得好,4年半后我更清楚了。