【问题标题】:label or @html.Label ASP.net MVC 4标签或@html.Label ASP.net MVC 4
【发布时间】:2013-04-25 18:33:54
【问题描述】:

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

<label class="LabelCSSTop">Introduction</label>

或者我应该使用:

 @Html.Label("STW", htmlAttributes: new { @class = "LabelCSSTop" })

不确定一个是否比另一个更受欢迎,或者是否可以。如果后者仍然发出标签标签,我应该坚持前者吗?

再一次,如果我只是想显示一个文本框,我可以这样做吗:

&lt;input id="txtName" type="text" /&gt;

或者我应该这样做:

@Html.TextBox("txtName", "")

是否存在我应该在常规 html 标记上使用 @Html 的情况?

提前致谢!!

【问题讨论】:

    标签: razor asp.net-mvc-4


    【解决方案1】:

    对于您的标签 sn-p,这并不重要。我会选择更简单的语法(纯 HTML)。

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

    强类型等效项

    但是,值得注意的是,您使用@Html.[Element]For&lt;T&gt;() 方法可以获得重要功能。请注意方法名称末尾的“For”。

    例子:

    @Html.TextBoxFor( o => o.FirstName )
    

    这将处理基于对象层次结构的 ID/名称创建(这对于模型绑定至关重要)。它还将添加不显眼的验证属性。这些方法将表达式作为参数,该参数引用模型中的属性。此属性的元数据由 MVC 框架获取,因此它比其字符串参数对应物“了解”更多有关该属性的信息。

    它还允许您以强类型的方式处理 UI 代码。 Visual Studio 将突出显示语法错误,而它不能对字符串执行此操作。视图也可以选择与解决方案一起编译,允许额外的编译时检查。

    其他注意事项

    有时,HTML 帮助器方法也会执行其他有用的任务,例如Html.CheckboxHtml.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>
    

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

    【讨论】:

      【解决方案2】:

      取决于你在做什么。

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

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

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

      【讨论】:

      • 您不必使用 Html 助手来让您的表单元素与您的模型绑定。如果您将表单元素命名为在模型中使用手动表单输入生成命名,则模型绑定器仍将绑定到它们
      • 我没有说“必须”。我说推荐。您有多个助手来帮助您控制元素、本地化和验证消息。
      • 对不起,您的声明读起来好像建议使用帮助器因为它让您的控件与您的模型绑定。我的错误
      【解决方案3】:

      如果您只想在 .cshtml 页面中显示一些文本,我不推荐 @Html.Label 也不建议使用 html 标签。 The element represents a caption in a user interface. 并且您会看到在 @Html.Label 的情况下,添加了一个 for 属性,指的是一个可能不存在的元素的 id。该属性的值为模型字段的值,其中非字母数字用下划线代替。 您应该使用 @Html.Display@Html.DisplayFor,可能包裹在一些普通的 html 元素 line span 或 p 中。

      【讨论】:

        【解决方案4】:

        帮助器主要用于帮助您为模型的强类型属性显示标签、表单输入等。通过使用帮助程序和 Visual Studio Intellisense,您可以大大减少生成网页时可能出现的拼写错误。

        话虽如此,您可以继续为视图模型的属性或要显示的不属于视图模型的项目手动创建元素。

        【讨论】:

          【解决方案5】:

          说到标签,我想说这取决于你喜欢什么。一些对 HTML 帮助标签有用的例子是,例如

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

          【讨论】:

            【解决方案6】:

            @html.label 和@html.textbox 在您想以一种简单的方式将其绑定到您的模型时使用......这无法通过输入等方式在一行中实现

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-09-04
              • 1970-01-01
              • 2011-01-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-06-30
              • 1970-01-01
              相关资源
              最近更新 更多