je le code suivant dans mon contrôleur (pour éditer et de créer):ASP.NET MVC DropDownList SelectedValue fonctionne sur l'action Edition, mais pas l'action Créer
model.Templates = new SelectList(PageManagementService.PageTemplateFetchList(), "PageId", "Title", 213);
le « 213 » est un identifiant pour l'un des les pages - juste l'utiliser pour tester.
Et cela est à mon avis (pour éditer et de créer):
<%= this.Html.DropDownListFor(model => model.Page.TemplateId, this.Model.Templates)%>
<%= this.Model.Templates.SelectedValue %>
Quand je vais à la forme Créer, je vois la liste déroulante, mais la balise avec value = « 213 » est pas sélectionné. Je produis même le SelectedValue pour m'assurer qu'il est 213 - et je vois 213.
Quand je vais au formulaire d'édition, je vois la liste déroulante, et l'étiquette avec la valeur = "213" est choisi.
Dans le formulaire Créer, aucun des balises n'a un attribut "sélectionné".
Dans le formulaire Modifier, la balise avec la valeur = "213" a l'attribut "selected".
Ai-je raté quelque chose? Qu'est-ce qui peut causer cela? Quelqu'un voit ce comportement avant?
MISE À JOUR: Modifier le nom de la liste déroulante le fait fonctionner. Par exemple, au lieu de
<%= this.Html.DropDownListFor(model => model.Page.TemplateId, this.Model.Templates)%>
j'ai fait
<%= this.Html.DropDownList("somedropdown", this.Model.Templates)%>
et cela a fonctionné. Vous ne savez pas pourquoi ...
Cela ne fonctionne pas. Mais, changer le nom de la liste déroulante a fonctionné. Des idées? – davekaro
Mais l'enregistrement ne fonctionne pas maintenant, non? Le problème réside probablement dans DropDownListFor ('model => model.Page.TemplateId' ...) Ceci est assez complexe pour la méthode' EditorForModel' à comprendre. Ajouter un champ fictif int à votre modèle pourrait le faire fonctionner: 'DropDownlistFor (model => model.DummyField, Model.Templates)' –
Eh bien, l'enregistrement a fonctionné car j'ai saisi manuellement la valeur sélectionnée dans FormCollection. J'ai essayé d'ajouter un champ int idiot à mon modèle - mais cela n'a pas fonctionné non plus. Pour l'instant, je vais utiliser ce qui fonctionne. – davekaro