在MVC Razor中能否同时设置Html.LabelFor的CSS类与文本值?
当然可以!同时设置LabelFor的自定义文本和CSS类
你需要用到LabelFor的重载方法——就是你贴出来的最后那个同时接收labelText和htmlAttributes参数的版本,刚好能满足你的需求。
针对你的场景,正确的Razor代码应该是这样的:
@Html.CheckBoxFor(s => s.RememberMe, new { @class = "custom-control-input" }) @Html.LabelFor(s => s.RememberMe, Html.Sitecore().DictionaryContent(Dictionary.LoginRememberMeFieldName, true).ToString(), new { @class = "custom-control-label" })
为什么你之前的写法都有局限?
- 第一种手动写
<label>标签的方式,虽然能自定义文本和类,但没法借助Razor的模型绑定自动生成正确的for属性,维护性差一些 - 第二种只传
htmlAttributes的写法,文本只能依赖模型属性的DisplayName特性或者字段名,没法用Sitecore字典的自定义内容 - 第三种只传自定义文本的写法,没有传入属性参数的位置,自然加不了CSS类
小细节注意
因为Html.Sitecore().DictionaryContent()返回的是MvcHtmlString类型,所以需要调用.ToString()把它转成字符串,才能匹配labelText的参数要求。这样一来,既能用上Sitecore字典的动态文本,又能给标签加上指定的CSS类,还能让Razor自动关联输入框的ID,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Tim Vermaelen
相关产品推荐
相关产品推荐

