尽管有数据注释,但MVC网站中并未显示类型电子邮件

时间:2014-11-10 11:39:30

标签: asp.net asp.net-mvc asp.net-mvc-4 viewmodel data-annotations

我有一个MVC 4网站,我希望在几个输入框上有type="email"。现在,通常我只会:

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

但是,由于某些奇怪的原因,该类型将呈现为文本。

现在,在我的viewmodel中我有:

    [Required(ErrorMessageResourceType = typeof(Global), ErrorMessageResourceName = "ViewModel_input_required")]
    [DataType(DataType.EmailAddress)]
    [EmailAddress(ErrorMessageResourceType = typeof(Global), ErrorMessageResourceName = "ViewModel_Account_display_email_not_valid", ErrorMessage = null)]
    [Display(ResourceType = typeof (Global), Name = "ViewModel_Account_display_email")]
    [PlaceHolder(ResourceType = typeof(Global), Name = "ViewModel_Account_display_email")]
    public string Email { get; set; }

如果我理解正确的话,应该给它输入电子邮件。

但是,它仍然是文字类型。

关于如何修复它的任何想法?

1 个答案:

答案 0 :(得分:1)

要在MVC 4中添加html属性,您需要使用TextBoxFor()

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

请注意,在MVC 5中,您可以使用

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