2009-12-27 5 views
2

J'ai créé un éditeur de templace dans une application mvc et je souhaite limiter l'entrée de chaque zone de texte du modèle aux seuls nombres. Au moment du rendu, le modèle peut être rendu plusieurs fois sur la page car la vue peut avoir plusieurs propriétés de type numéro de téléphone, de sorte que les ID réels des zones de texte auront des noms uniques. Quelle est la meilleure façon pour moi d'ajouter du code jquery au template, en réduisant la duplication de code, et en étant capable de gérer le problème de l'ID généré dynamiquement par le framework mvc?Utilisation de jquery dans un modèle d'éditeur mvc 2 d'asp.net

ci-dessous est mon modèle:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<PhoneNumber>" %> 
<span> 
(<%= Html.TextBox("AreaCode", (Model == null) ? "" : Model.AreaCode, new { size = 3, maxlength = 3, style = "width:25px" })%>)&nbsp; 
<%= Html.TextBox("Prefix", (Model == null) ? "" : Model.Prefix, new { size = 3, maxlength = 3, style = "width:25px" })%>- 
<%= Html.TextBox("Suffix", (Model == null) ? "" : Model.Suffix, new { size = 3, maxlength = 4, style = "width:35px" })%>&nbsp; 
<%= Html.TextBox("Extension", (Model == null) ? "" : Model.Extension, new { size = 10, maxlength = 10, style = "width:55px" })%> 
</span> 

Répondre

2

Définissez chaque zone de texte pour avoir une classe CSS spécifique. Ensuite, utilisez jquery pour travailler sur la classe plutôt que sur id. Vous pouvez également supprimer certains attributs html et les définir spécifiquement dans votre classe css.

<%= Html.TextBox("AreaCode", (Model == null) ? "" : Model.AreaCode, 
    new { size = 3, maxlength = 3, @class = "number-textbox" }) %> 

//jquery 
$('.number-textbox').each(function() 
{ 
    //validate numbers method 
}); 

//css 
.number-textbox 
{ 
    width: 25px; 
} 
+0

Bonne idée, merci. – Jeremy

0

Vous devez créer un contrôle utilisateur comme « modèle » et utiliser un préfixe de liaison selon certains id identifiant de façon unique le contrôle de l'utilisateur.

Comme:

Html.TextBox("Contact1.AreaCode", [...]) 

Mais je pense que vous devrez chercher en arrière les valeurs vous-même. Ou vous pouvez créer votre propre classeur modèle pour gérer votre liste.

Mike

Questions connexes