9

这是一个非常具体的问题。我设法使用EmailAddress.cshtml保存在~/Views/Shared/EditorTemplates/文件夹中的名为 的编辑器模板自动将占位符属性添加到 html5 电子邮件输入类型。请看下面的代码:

@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line", placeholder = ViewData.ModelMetadata.Watermark })

它之所以有效,是因为我[DataType(DataType.EmailAddress)]在我的视图模型中使用了 DataAnnotation。

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="">

问题是我无法显示PromptDataAnnotation(通常由 翻译placeholder)。此外,DataType枚举没有任何“数字”或“整数”值可以让我使用 EditorTemplate,就像我对 EmailAddress DataType 所做的那样。

4

1 回答 1

15

根据Pat Burke的评论,我可以使用 UIHint 数据属性结合良好的编辑器模板。

下面是一个例子(Editor Template):

@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line", placeholder = ViewData.ModelMetadata.Watermark, type = "number" })

( ViewModel)

public class MiageQuotaRequestViewModel
{
    [Required]
    [UIHint("Number")]
    [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; }
}

最后是结果:

在此处输入图像描述

<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"
    placeholder="Nombre de place"
    type="number"
    value="">
于 2013-01-28T21:42:18.937 回答