zoukankan      html  css  js  c++  java
  • Html.Label的缺陷及补救办法

           在最近开发的项目中,应用了Html.LabelFor(TModel)来生成<lable/>标签,同时配合Html.TextBoxFor(TModel)来生成<Input/>标签,效果不错,生成的Html标签
    效果如下:
    <label for="UserName">标签内容</label>
    <input id="UserName" name="UserName" type="text" value="" />
    问题产生了:
    <Lable>标签内容</Lable>准备实现多国语言版本,使用的是Resources文件。但是,Html.LabelFor()方法只支持Model的DisplayName属性:
    public class User
    {
        [DisplayName="标签内容"]
        public string DisplayName { get; set; }
        public string SortName { get; set; }
    }
    问题是DisplayName属性不支持国际化,无法调用Resource中的资源字符串!(此处省略n万字,尝试各种解决方法,就不在此描述了,总之是不成功) 那就换个解决方案吧: <%:Html.Label(Resources.User.Info_State_Header) %> 国际化的问题解决了,但是那个优雅的<label for=”UserName”>属性无法实现了!难道鱼与熊掌不能兼得吗?郁闷啊! 强大的Asp.net Mvc 框架不是吹牛皮吹出来的,上家伙 自定义HtmlHelper方法,直接上代码,大家都是高手,我就不解释了:
    namespace System.Web.Mvc
    {
        public static class myHtmlHelper
        {
            /// <summary>
            /// 自定义HtmlHelper Label方法,解决for属性和国际化字符串不能同时解决的问题
             /// </summary>
            /// <typeparam name="TModel"></typeparam>
            /// <typeparam name="TValue"></typeparam>
            /// <param name="?"></param>
            /// <param name="expression"></param>
            /// <param name="DisplayName">要在Label标签中显示的本地化字符串</param>
            /// <returns></returns>
            public static MvcHtmlString Label<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> expression, string DisplayName)
            {
                string modelName = ExpressionHelper.GetExpressionText(expression);
                TagBuilder tagBuilder = new TagBuilder("label");
                tagBuilder.Attributes.Add("for",modelName);
                tagBuilder.InnerHtml = DisplayName;
                return MvcHtmlString.Create(tagBuilder.ToString(TagRenderMode.Normal));
            }
        }
    }
    啊,问题消失了,继续干活吧,前面的道路还很长呢
  • 相关阅读:
    29Mybatis_整合ehcache以及应用场景
    28Mybatis_查询缓存-二级缓存-二级缓存测试-
    27Mybatis_一级缓存的实际应用场景
    解析分布式锁之Zookeeper实现(一)
    程序员的十年工作创业血泪史,万字长文,仔细读完,受益匪浅
    2018 Java线程热门面试题,你知道多少?
    看阿里P9架构师如何向你定义架构及架构师
    程序员30 岁之后:如何实现质的突破?
    强者自救,圣者渡人
    干货:通过双十一等项目实战看架构技术
  • 原文地址:https://www.cnblogs.com/panda/p/1789277.html
Copyright © 2011-2022 走看看