Razor label或@html.label ASP.net MVC 4

Razor label或@html.label ASP.net MVC 4,razor,asp.net-mvc-4,Razor,Asp.net Mvc 4,ASP.NETMVC4的新手,并试图理解Razor。如果我只想在.cshtml页面中显示一些文本,我可以使用 <label class="LabelCSSTop">Introduction</label> 不确定其中一个是否比另一个更受欢迎,或者两者是否都可以。如果后者发出标签标签,我应该坚持前者吗 同样,如果我只想显示一个文本框,我可以这样做: 或者我应该这样做: @Html.TextBox(“txtName”和“”) 我是否应该在常规Html标记上使用@Html

ASP.NETMVC4的新手,并试图理解Razor。如果我只想在.cshtml页面中显示一些文本,我可以使用

<label class="LabelCSSTop">Introduction</label>
不确定其中一个是否比另一个更受欢迎,或者两者是否都可以。如果后者发出标签标签,我应该坚持前者吗

同样,如果我只想显示一个文本框,我可以这样做:

或者我应该这样做:

@Html.TextBox(“txtName”和“”)

我是否应该在常规Html标记上使用@Html


提前谢谢

@html.label和@html.textbox用于以简单的方式将其绑定到模型…这无法通过输入等方式实现。在一行中,帮助程序主要用于帮助您显示模型强类型属性的标签、表单输入等。通过使用帮助程序和Visual Studio Intellisense,可以大大减少生成网页时可能出现的打字错误


这样,您就可以继续为视图模型的属性或不属于视图模型的要显示的项目手动创建图元

对于标签片段来说,这并不重要。我会选择更简单的语法(纯HTML)

大多数助手方法也不允许您包围另一个元素。在选择使用/不使用时,这可能是一个考虑因素

强类型等价物 但是,值得注意的是,使用
@Html.[Element]For()方法可以获得重要的特性。注意方法名称末尾的“For”

例如:

@Html.TextBoxFor( o => o.FirstName )
这将处理基于对象层次结构的ID/名称创建(这对于模型绑定至关重要)。它还将添加不引人注目的验证属性。这些方法将表达式作为引用模型内属性的参数。这个属性的元数据是由MVC框架获得的,因此它比它的字符串参数对应物“知道”更多关于这个属性的信息

它还允许您以强类型方式处理UI代码。VisualStudio将突出显示语法错误,但不能使用字符串。还可以选择将视图与解决方案一起编译,从而允许进行额外的编译时检查

其他考虑 有时,HTML助手方法也会执行一些有用的附加任务,例如
HTML.Checkbox
HTML.CheckboxFor
,它们也会创建一个隐藏字段以与复选框一起使用。另一个例子是与URL相关的方法(例如超链接),它们是路由感知的

<!-- bad -->
<a href="/foo/bar/123">my link</a>

<!-- good -->
@Html.ActionLink( "my link", "foo", "bar", new{ id=123 } )

<!-- also fine (perhaps you want to wrap something with the anchor) -->
<a href="@Url.Action( "foo", "bar", new{ id=123 } )"><span>my link</span></a>

@ActionLink(“我的链接”、“foo”、“bar”、新的{id=123}”)

使用纯HTML与在呈现视图时必须执行的代码相比,有一点性能优势,尽管这不应该是决定因素。

取决于您的操作

如果您有SPA(单页应用程序),您可以使用:

<input id="txtName" type="text" />


否则,建议使用Html帮助程序,使控件与模型绑定。

当涉及标签时,我会说,您喜欢什么取决于您自己。例如,当它与HTML帮助标记一起使用时,有些示例非常有用

  • 在处理超链接时,因为HTML助手简化了路由
  • 绑定到模型时,请使用
    @Html.LabelFor
    @Html.TextBoxFor
  • 当您使用
    @Html.EditorFor
    时,您可以在编辑器视图中指定och外观的特定行为

如果您只想在.cshtml页面中显示一些文本,我不建议使用@Html.Label,也不建议使用Html标签。您将看到在@Html.Label的情况下,添加了一个for属性,表示一个可能不存在的元素的id。此属性的值是模型字段的值,其中非字母数字替换为下划线。
您应该使用@Html.Display或@Html.DisplayFor,可能包装在一些简单的Html元素行span或p中。

您不必使用Html帮助程序使表单元素与模型绑定。如果您将表单元素命名为手动表单输入生成的模型中的名称,那么模型绑定器仍将绑定到它们,我没有说“必须”。我说推荐。您有多个帮助程序可帮助您控制元素、本地化和验证消息。抱歉,您的语句读起来似乎建议使用这些帮助程序,因为它使您的控件与模型绑定。我的错误
<input id="txtName" type="text" />