我正在使用mvc5与剃刀结合并根据语言动态填充网站文本.例:
@Html.Label(@DDHelper.GetContent("user_name"),htmlAttributes: new { @class = "control-label col-md-3" })
@ DDHelper.GetContent(“user_name”)返回一个字符串,该字符串设置为标签文本.当@ DDHelper.GetContent(“user_name”)返回“Hello”时.标签未创建且html源为空.
我知道这是因为@ HTML.Label()不允许’.’这是我的问题的根源,我应该使用@HTML.LabelFor(),但是当我只想显示一个字符串时,如何使用@ HTML.LabelFor()?
解决方法
检查@ Html.Label的重载,您正在使用的是:
public static MvcHtmlString Label(this HtmlHelper html,string expression,object htmlAttributes)
你想要的是
public static MvcHtmlString Label(this HtmlHelper html,string labelText,object htmlAttributes)
对HTML标签的含义存在一种常见的误解.在winforms上,标签是放置一些文本的地方 – 在HTML中不是这种情况.在HTML a< label>是允许用户单击您的文本并使焦点/光标指向相应的输入.
标签的完整语法是:
<label for="controlName">caption</label>
上面重载中的’expression’部分是html中的“for”部分 – 它必须指向控件名称.
如果您正在尝试这样做(将标签与控件配对),请尝试:
@Html.Label("user_name",@DDHelper.GetContent("user_name"),htmlAttributes: new { @class = "control-label col-md-3" })
您的输入名为“user_name”的位置.这是@ Html.LabelFor的用武之地,如:
@Html.Labelfor(model=>model.UserName,htmlAttributes: new { @class = "control-label col-md-3" })
所以你不要硬编码字段名称,他们重构.
如果您“只想显示字符串”,那么您可能不需要< label>.如果你只需要一些简单的文本,你不需要@Html任何东西,只需输出翻译:
<div class='control-label col-md-3'> @DDHelper.GetContent("user_name") </div>
但是当你使用’control-label’时,我怀疑你确实想要< label>.