2011-04-08 1 views
1

Vous ne savez pas si cette question a déjà été posée.Confondu par la façon dont ASP .NET MVC remplit les champs en fonction du modèle de vue et des valeurs de formulaire affichées

Je développe un site ASP .NET MVC 2. Ma vue dispose d'un menu déroulant où l'utilisateur peut sélectionner l'enregistrement à afficher pour l'édition. Lorsque cette liste déroulante est modifiée, les valeurs de champ de l'enregistrement actuellement sélectionné sont automatiquement enregistrées sur le serveur et enregistrées dans la session. Dans la réponse, le serveur renvoie une vue pour éditer l'enregistrement nouvellement sélectionné. Le problème que j'ai est que certaines des valeurs de champ de l'enregistrement précédent sont rappelées quand le nouvel enregistrement est affiché.

À mon avis j'ai quelque chose comme ce qui suit qui est à l'origine du problème:

<%= Html.TextBox("ActionTypeDetails.DisplayName", 
       Model.ActionTypeDetails.DisplayName) %> 

Ici, je veux les données affichées pour remplir un paramètre appelé ActionTypeDetails qui a des propriétés multiples, y compris DisplayName.

Mes actions du contrôleur ressemble à ceci:

public ActionResult EditActionType(Guid PluginEditID, 
            Guid? SelectedActionTypeID, 
            ActionTypeViewObj ActionTypeDetails) 

J'ai essayé de changer mon point de vue à ceci:

<%= Html.TextBox("PostedActionTypeDetails.DisplayName", 
       Model.ActionTypeDetails.DisplayName) %> 

Et mon action de contrôleur à ceci:

public ActionResult EditActionType(Guid PluginEditID, 
            Guid? SelectedActionTypeID, 
            ActionTypeViewObj PostedActionTypeDetails) 

Pourtant, il présente toujours le même problème. Est-ce que quelqu'un peut expliquer la logique pourquoi cela fonctionne comme ça? Quelle est la solution de contournement la plus simple qui me permettrait toujours d'utiliser la liaison de modèle intégrée? Je sais que je peux effacer le ModelState mais ce n'est pas idéal car je veux que l'on se souvienne de certaines autres données du formulaire.

+0

Pourriez-vous poster votre mesure, s'il vous plaît? –

Répondre

0

Si vous publiez sur le même URL, asp.net dispose de mécanismes qui préservent les valeurs de champs. Plus d'infos peut être trouvé here.

+0

Finalement, j'ai eu recours à tout le ModelState qui n'était pas idéal mais la seule solution que j'ai pu trouver. – James

Questions connexes