Pregunta

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.

La persona que sigue tiene una pregunta similar ( Html.DropDownList en ASP.NET MVC RC (actualizar) no preseleccionando el elemento ) pero no hay respuesta (aparte de que podría ser un error)

El método de mi controlador tiene el siguiente aspecto:

[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 está fuertemente tipada en el Modelo de la siguiente manera

public partial class View : ViewPage<IntegrationContainer> {}

El área problemática 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 realmente, y ese es el problema. " item.CompanyID " es un Guid, " id " es un Guid y " nombre " es una cadena en el objeto de empresa suministrado en el IList que se mantiene en la instancia de ViewData.Model.Companies.

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

Independientemente, ¿cuál sería el trabajo sugerido?

Gracias

¿Fue útil?

Solución

Resulta que si el nombre de su control a través de Html.DropDownList es el mismo nombre que el objeto de la colección, 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 funciona. Esto se debe a que 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 " empresas " Tampoco funciona (lo cual tiene sentido, supongo).

Podría cambiar el modelo, pero como la mayoría se construye utilizando Linq-to-SQL, creo que es más fácil cambiar los nombres de los elementos HTML.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top