Comment ajouter automatiquement espace réservé à l'attribut html entrée numéro de type mvc 4?

C'est un problème très spécifique. J'ai réussi à ajouter automatiquement l'espace réservé à l'attribut html5 e-mail type d'entrée à l'aide d'un éditeur de modèle appelé EmailAddress.cshtml, enregistré dans ~/Views/Shared/EditorTemplates/ dossier. Voir le code ci-dessous:

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

Cela fonctionne parce que je suis en utilisant le [DataType(DataType.EmailAddress)] DataAnnotation dans mon modèle de vue.

Ce qui ne fonctionne pas, c'est quand j'utilise un int? variable.

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 traduit cette entrée comme ceci:

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

Le problème est que je ne peux pas afficher la Prompt DataAnnotation (habituellement traduit par placeholder). Aussi, le DataType enum n'ont pas de "nombre" ou "entier" valeur qui peut me permettre d'utiliser le EditorTemplate comme je l'ai fait pour votre Adresse de courrier électronique de Type de données.

Pourquoi une adresse e-mail de type Nullable<int>?
J'explique probablement dans le mauvais sens. L'email est un échantillon de ce qui fonctionne. La deuxième partie (avec int?) est ce qui ne fonctionne pas. Le type de l'e-mail est une chaîne comme ceci: [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; }
Donc le but est d'obtenir le bon éditeur de modèle à utiliser? Si oui, vous pouvez utiliser le bouton [UIHint] attribut pour spécifier de Rasoir modèle que vous souhaitez utiliser: msdn.microsoft.com/en-us/library/...
Avez-vous vérifié stackoverflow.com/questions/7760599/... ?

OriginalL'auteur Florent | 2013-01-28