这是一个非常特定的问题。我成功地通过使用名为EmailAddress.cshtml
的编辑器模板,在~/Views/Shared/EditorTemplates/
文件夹中保存,自动添加了placeholder属性到html5电子邮件输入类型。请参见以下代码:
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line", placeholder = ViewData.ModelMetadata.Watermark })
这能够正常工作是因为我在视图模型中使用了[DataType(DataType.EmailAddress)]
数据注解。
但当我使用int?
变量时,它就不能正常工作。
public class MiageQuotaRequestViewModel
{
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Nombre de place demandées", Prompt = "Nombre de place")]
[Range(0, 50, ErrorMessage = "La demande doit être comprise entre 0 et 50 places")]
public int? RequestedQuota { get; set; }
}
@Html.EditorFor
将此输入翻译为:
<input class="text-box single-line" data-val="true" data-val-number="The field Nombre de place demandées must be a number." data-val-range="La demande doit être comprise entre 0 et 50 places" data-val-range-max="50" data-val-range-min="0" data-val-required="Le champ Nombre de place demandées est requis." id="RequestedQuota" name="RequestedQuota" type="number" value="">
问题在于我无法显示
Prompt
数据注释(通常由placeholder
翻译)。此外,DataType
枚举没有任何“数字”或“整数”值,可以允许我像为EmailAddress DataType一样使用EditorTemplate。
[Required, MaxLength(100), DataType(DataType.EmailAddress), Display(Name = "Adresse e-mail", Prompt = "Votre adresse e-mail"), Email(ErrorMessage = "Adresse e-mail invalide")]
public string EmailAddress { get; set; }
- Florent Henry