2009-07-30 37 views
13

Tengo un sitio que estaba utilizando ASP.Net MVC Beta 5, y acabo de actualizarlo a ASP.Net MVC 1.0. Tengo problemas con el elemento seleccionado en una lista desplegable.ASP.Net Html.DropDownList Elemento seleccionado no seleccionado

La persona seguimiento tiene una pregunta similar (Html.DropDownList in ASP.NET MVC RC (refresh) not pre-selecting item) pero no hay respuesta (aparte de que podría ser un error)

método

Mi controlador se ve de la siguiente manera:

[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 vista es un establecimiento inflexible contra el modelo de la siguiente manera

public partial class View : ViewPage<IntegrationContainer> {} 

el área del problema en la plantilla de vista es:

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

Estoy creando una lista desplegable, el elemento seleccionado nunca se selecciona, y ese es el problema. "item.CompanyID" es un Guid, "id" es un Guid y "name" es una cadena en el objeto de empresa suministrado en el IList que se encuentra en la instancia ViewData.Model.Companies.

¿Es esto realmente un error? - Me resulta difícil entender por qué esto todavía está presente en ASP.Net MVC ... Sería totalmente feliz si es algo que he hecho.

De todos modos, ¿cuál sería el trabajo sugerido?

Gracias

Respuesta

21

Resulta que si el nombre de su control a través de Html.DropDownList es el mismo nombre que el objeto de colección que causa un problema con ASP.Net MVC.

Así que si cambio el siguiente código:

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

a:

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

todo ahora trabaja. Esto es porque el nombre de la colección en el modelo era Model.Companies .... bonkers ... también tenga en cuenta que cambiar el caso del nombre del control de "Companies" a "companies" tampoco funciona (lo que hace sentido, supongo)

Pude cambiar el Modelo, pero como la mayoría está construido con Linq-to-SQL, creo que es más fácil cambiar los nombres de los elementos HTML.

+1

Después de buscar a través de 6 preguntas en SO, esta es la única respuesta que funcionó ... ¡gracias! – Martin

+0

No hay problema. :) – Kinlan

+0

He estado golpeando mi cabeza contra la pared en este caso, muchas gracias. – aboy021

Cuestiones relacionadas