2009-12-18 5 views
1

J'ai un bouton qui créera une nouvelle entrée (ligne dans une table) dynamiquement en utilisant jQuery. Chaque entrée est une ligne dans une table html.Comment publier des champs créés dynamiquement dans une table en utilisant jquery/asp.net mvc

Pour chaque ligne, chaque colonne a une entrée (zone de texte, bouton radio, case à cocher), etc.

Parce que vous pouvez ajouter autant de lignes que vous le souhaitez vous vous retrouvez avec une série ou d'une collection de ces lignes.

Lorsque je publie le formulaire, il me semble que ces données ne figurent pas dans formscollection et ne comprennent pas très bien comment traduire ces commandes dans un objet de données pour la liaison.

Donc, il y a essentiellement 2 questions:

  1. Y at-il un problème avec les contrôles créés dynamiquement et faire en sorte qu'ils apparaissent sous la forme de post?

  2. Qu'est-ce qu'un moyen de transmettre une structure de table de données à mon contrôleur. Je souhaite presque que chaque ligne représente un objet Record, puis passe une collection d'enregistrements au contrôleur si quelque chose comme ça est possible.

Une suggestion?

Répondre

1

pour obtenir un coll ection, assurez-vous que le nom des zones de texte est quelque chose comme "MyRecord.MyList [0] .Field1". MVC va automatiquement tirer cela jusqu'à un nombre énumérable. Pour votre javascript ajoute, assurez-vous que chaque ligne ajoutée a un index correctement incrémenté (par exemple, de nouveaux champs nommés "MyRecord.MyList [1] .Field1").

+0

est-ce important avec l'ID ou le nom de la table elle-même est ou asp.net mvc ignorer cela. ? – leora

+0

semble que je n'incluais pas MYRecord pour qualifier l'objet .. maintenant ça marche – leora

0

Vous devez vous assurer que vos éléments créés dynamiquement se trouvent entre les balises de formulaire. La liaison de modèle par défaut se liera à un tableau d'objets si vous vous assurez de nommer vos champs de telle sorte qu'ils deviennent «Thing [3] .Name» (c'est le champ Nom de la quatrième rangée, zéro les limites du tableau)

votre signatture pour la méthode d'action devient alors un peu comme:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult MethodName(thing[] things) 
{ 
    ... 
} 

bonté,

Dan

0

Assurez-vous que l'identifiant de chaque ligne est unique, mais il devrait être publié dans le formulaire qui est publié sur le serveur ... Comment faites-vous la publication? Est-ce que vous faites le post avec JQuery?

Questions connexes