我可以很容易地使用TextBoxFor
來做到這一點,但我該怎麼做EditorFor
?@ Html.EditorFor如何使屬性類型=「電子郵件」
我想通過使用DataAnnotation [DataType(DataType.EmailAddress)]
但不這樣做。
我不太明白DataType
註釋實際上做了什麼,因爲它乍一看似乎沒有做任何事情。
我可以很容易地使用TextBoxFor
來做到這一點,但我該怎麼做EditorFor
?@ Html.EditorFor如何使屬性類型=「電子郵件」
我想通過使用DataAnnotation [DataType(DataType.EmailAddress)]
但不這樣做。
我不太明白DataType
註釋實際上做了什麼,因爲它乍一看似乎沒有做任何事情。
EditorFor
幫助程序方法在開箱即用方面有所限制,並且尚未顯示爲支持HTML5 type="email"
屬性。
您的選項現在似乎要麼使用TextBoxFor
,要麼創建一個自定義模板,以允許您設置輸入的type
屬性。這裏的another thread評論了一些創建自己的模板的選項。
DataAnnotation [DataType(DataType.EmailAddress)]
其實很有用。它將您的表單字段的id
和name
設置爲email
,您可以將它用於jQuery驗證以顯示用戶客戶端驗證消息。將DataAnnotation
應用於您的模型類也意味着模型上的電子郵件屬性將在服務器端自動進行驗證。如果您在應用程序中啓用了不顯眼的驗證,則幾乎可以免費獲得客戶端和服務器端驗證。
您可以重寫HTML屬性,到一個瀏覽器將回退到type='text'
,如果他們不支持的話:
@Html.TextBoxFor(m => m.Email, new { @type = "email" })
現在似乎得到支持。
@Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control", @type = "email" } })
作爲除了jortizromo的回答,你現在至少有兩個選項:
在htmlAttributes
參數指定@type
的方法EditorFor()
在
@Html.EditorFor(model => model.Email, new { htmlAttributes = new { @type = "email" } })
使用中的EmailAddress
註釋屬性命名空間模型中的類定義了相應的Email
屬性和簡單的調用方法EditorFor()(這提供了可根據你的任務是好還是壞主意HTML驗證數據標籤)作爲在
視圖模型
[EmailAddress]
public string Email { get; set; }
Razor視圖
@Html.EditorFor(model => model.Email)
不能使與TextBoxFor這種情況發生 – 2013-03-28 07:33:13