2012-03-25 52 views

回答

6

EditorFor幫助程序方法在開箱即用方面有所限制,並且尚未顯示爲支持HTML5 type="email"屬性。

您的選項現在似乎要麼使用TextBoxFor,要麼創建一個自定義模板,以允許您設置輸入的type屬性。這裏的another thread評論了一些創建自己的模板的選項。

DataAnnotation [DataType(DataType.EmailAddress)]其實很有用。它將您的表單字段的idname設置爲email,您可以將它用於jQuery驗證以顯示用戶客戶端驗證消息。將DataAnnotation應用於您的模型類也意味着模型上的電子郵件屬性將在服務器端自動進行驗證。如果您在應用程序中啓用了不顯眼的驗證,則幾乎可以免費獲得客戶端和服務器端驗證。

+0

不能使與TextBoxFor這種情況發生 – 2013-03-28 07:33:13

13

您可以重寫HTML屬性,到一個瀏覽器將回退到type='text',如果他們不支持的話:

@Html.TextBoxFor(m => m.Email, new { @type = "email" })

6

現在似乎得到支持。

@Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control", @type = "email" } }) 
3

作爲除了jortizromo的回答,你現在至少有兩個選項:

  1. htmlAttributes參數指定@type的方法EditorFor()

    @Html.EditorFor(model => model.Email, new { htmlAttributes = new { @type = "email" } }) 
    
  2. 使用中的EmailAddress註釋屬性命名空間模型中的類定義了相應的Email屬性和簡單的調用方法EditorFor()(這提供了可根據你的任務是好還是壞主意HTML驗證數據標籤)作爲在

    視圖模型

    [EmailAddress] 
    public string Email { get; set; } 
    

    Razor視圖

    @Html.EditorFor(model => model.Email) 
    
相關問題