Question

J'ai un site qui utilisait ASP.Net MVC Bêta 5 et je viens de le mettre à niveau vers ASP.Net MVC 1.0. J'ai des problèmes avec l'élément sélectionné dans une liste déroulante.

La personne suivante a une question similaire ( Html.DropDownList dans ASP.NET MVC RC (rafraîchir) pas présélectionner l'élément ) mais je n'ai pas de réponse (autre que cela pourrait être un bogue)

La méthode Mon contrôleur se présente comme suit:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult View(Guid id)
{
    IntegrationLogic logic = new IntegrationLogic(new IntegrationLinq());
    CompanyLogic companyLogic = new CompanyLogic(new CompanyLinq());
    IntegrationContainer container = new IntegrationContainer();

    container.Sources = logic.GetImportSource(id);
    container.Companies = companyLogic.GetCompanies(); // Returns a IList<company>
    container.SourceActions = logic.GetAllSourceActions(); // Returns an IList<SourceAction>
    container.SinkActions = logic.GetAllSinkActions();
    container.SuccessActions = logic.GetAllSuccessActions();
    container.FailureActions = logic.GetAllFailureActions();
    container.Actions = logic.GetAllActions();
    container.Watchers = logic.GetAllWatcherActions();
    container.ChainActions = logic.GetAllChainActions();

    return View("View", container);
 }

La vue est fortement typée contre le modèle comme suit

public partial class View : ViewPage<IntegrationContainer> {}

Le problème dans le modèle de vue est le suivant:

  <label for="Companies">Company: </label><%=Html.DropDownList("Companies",
                                                new SelectList(ViewData.Model.Companies, "id", "name", item.CompanyID))%>

Je crée une liste déroulante, l'élément sélectionné n'est jamais sélectionné - et c'est le problème. " item.CompanyID " est un Guid, & id; id " est un Guid et " nom " est une chaîne sur l'objet de société fourni dans IList qui est contenu dans l'instance ViewData.Model.Companies.

S'agit-il vraiment d'un bogue? J'ai du mal à comprendre pourquoi cela est toujours présent dans ASP.Net MVC ... Je serais totalement heureux si c'est quelque chose que j'ai fait.

Quoi qu'il en soit, quel serait le travail suggéré autour?

Merci

Était-ce utile?

La solution

Il s’avère que si le nom de votre contrôle via Html.DropDownList est identique à celui de l’objet de collection, il provoque un problème avec ASP.Net MVC.

Donc si je change le code suivant:

<label for="Companies">Company: </label><%=Html.DropDownList("Companies",
                                                new SelectList(ViewData.Model.Companies, "id", "name", item.CompanyID))%>

à:

<label for="Companies">Company: </label><%=Html.DropDownList("company",
                                                new SelectList(ViewData.Model.Companies, "id", "name", item.CompanyID))%>

tout fonctionne maintenant. En effet, le nom de la collection sur le modèle était Model.Companies ... bonkers ... notez également que le casse du nom du contrôle de "Companies" aux " entreprises " ne fonctionne pas non plus (ce qui a du sens, je suppose).

Je pourrais changer le modèle, mais comme la plupart est construit avec Linq-to-SQL, je pense qu'il est plus facile de changer les noms des éléments HTML.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top