簡體   English   中英

ASP.NET MVC HtmlHelper Razor語法

[英]ASP.NET MVC HtmlHelper Razor Syntax

我目前正在學習ASP.NET MVC,並提供以下代碼片段:

@Html.TextBoxFor(m => m.FirstName, new { @placeholder = "First name"})

我理解lambda表達式將模型稱為m ,但第二個參數是什么? 它似乎是一個匿名類型,但我的主要問題是為什么占位符前面有一個@字符?

第二個參數是htmlAttributes ,您可以使用它來向幫助程序生成的HTML添加其他屬性(@ Html.TextBoxFor是一個HTML幫助程序)。

為您的示例生成的代碼將沿着以下行:

@Html.TextBoxFor(m => m.FirstName, new { @placeholder = "First name"})
<input type="text" name="FirstName" placeholder="First name" />

如果需要,您可以添加更多屬性,它們也將添加到生成的標記中:

@Html.TextBoxFor(m => m.FirstName, new { placeholder = "First name", @class="my_text_box_class" })
<input type="text" name="FirstName" placeholder="First name" class="my_text_box_class" />

也可以使用Value (大寫V!)來覆蓋文本框的Value

@Html.TextBoxFor(m => m.FirstName, new { placeholder = "First name", Value="John Johnson"})
<input type="text" name="FirstName" placeholder="First name" value="John Johnson" />

@符號的原因是當您想要一個名為C# 保留字的屬性時。 class,private,namespace等。這是一種讓C#編譯器停止解釋它的方法,因為它是C#的含義。 只有這些保留字才需要@符號。

@placeholder語法告訴剃刀引擎您要為將由助手呈現的元素上的html屬性賦值。 因此,如果您還需要將類設置為文本框,則您的匿名類型將更改為:

new { @placeholder = "First name", @class = "BoldText" }

至於為何使用@@允許您使用保留關鍵字作為變量名。 如果你試圖使用

class = "BoldText"

您將在視圖中收到運行時錯誤,因為class是C#中的保留關鍵字。 前置@確保不會發生這種情況,並被視為“最佳做法”。 @只在class前需要,而不是placeholder

第二個參數需要您希望在輸入中指定的htmlAttributes的匿名對象。

您使用@符號告訴剃刀引擎您正在指定htmlAttribute而不是保留關鍵字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM