c# – Razor标签点周期

前端之家收集整理的这篇文章主要介绍了c# – Razor标签点周期前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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>.

猜你在找的C#相关文章