9

これは非常に具体的な問題です。フォルダーEmailAddress.cshtmlに保存された、というエディターテンプレートを使用して、プレースホルダー属性をhtml5電子メール入力タイプに自動的に追加することができました。~/Views/Shared/EditorTemplates/以下のコードを参照してください。

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

Prompt問題は、 DataAnnotationを表示できないことです (通常は によって翻訳されplaceholderます)。また、DataTypeEnum には、EmailAddress DataType で行ったように EditorTemplate を使用できる「数値」または「整数」値がありません。

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 に答える