Pregunta

Tengo una aplicación que tiene dos listas desplegables dependientes, en la que si el usuario selecciona un valor en el cuadro de lista A, se actualiza el conjunto disponible de entradas en la lista de la caja B. Tal como marca / modelo de un coche. cuando el usuario selecciona el fabricante, la lista de modelos actualizaría en consecuencia.

En WinForms, esto sólo sería manejado en el autopost volver evento. ¿Qué técnica / enfoque debería tener en asp.net MVC? se realiza a través de AJAX? tratando de ponerse al día en MVC y que buscan construir estrategias para manejar las tareas comunes que me hacen para manejar en el trabajo.

Yo quería dar las gracias a todos los que contribuyeron a responder a este mensaje.

¿Fue útil?

Solución

Me gustaría hacer esto a través de ajax. Si usted tiene estos controles:

<select id="makes" /> y <select id="models" />

A continuación, se puede hacer esto con jQuery:

$().ready(function() {
   $("select#makes").change(function() {
        var make = this.value;          
        $.getJSON('models/list?make=' + make, function(data) {
              //load 2nd dropdown with result
        })
   });
});

A continuación, sólo se necesitaría una acción sobre el ModelsController denominada lista () que devuelve una estructura de datos JSON.

Otros consejos

que está utilizando ASP.NET MVC es algo irrelevante. Es, básicamente, tiene tres opciones para este tipo de interfaz de usuario mecánico en una página web.

  1. Si los datos de las listas es relativamente pequeño y con poca frecuencia cambiante, puede ser más fácil simplemente para precargar todos los datos posibles sobre la página en la solicitud inicial, ya sea en algo así como una matriz de JavaScript o elementos ocultos en el marcado de la página. Cuando el valor de la casilla A cambia, javascript, simplemente reemplaza el contenido de la caja B con los datos apropiados. todo esto sucede sin ninguna solicitud de vuelta al servidor que lo hace muy rápido. Sin embargo, este método se rompe cuando el tamaño de los datos afecta el tiempo de respuesta de la carga de la página inicial.

  2. Si los datos de las listas es grande o que cambian con frecuencia (dentro del marco de tiempo que un usuario podría estar en la página de tomar una decisión), el método heredado es tener sólo la página Cómo cargado nuevamente con los nuevos argumentos de la consulta cuando el valor de la casilla A cambia. Código en el back-end ajusta la salida en base a los nuevos argumentos. Dependiendo de la complejidad del resto del código de representación en su página es, esto puede ser costoso.

  3. Esta es una variación de la opción 2 y es básicamente la respuesta de Ben Scheirman dio en relación con ajax. Todavía se está cargando el contenido de la caja B de la demanda cuando la caja A cambia. La diferencia es que sólo se está recargando la pieza de la página que ha cambiado en lugar de toda la página.

En lo personal, si los datos es lo suficientemente pequeña como la opción 1 para usar, eso es probablemente lo que iría con debido a su rendimiento. De lo contrario, ir con la opción 3, sobre todo si ya tienes otras cosas relacionadas con ajax ya implementadas. Opción 2 se parece considerarse un mecánico legado por muchas personas en estos días.

Funcionalmente que funcionaría para colocar esas dos listas desplegables en su propia visión parcial y luego regresar sólo que cuando se selecciona el valor de la Lista. Si eso no es factible para fines de diseño, entonces el método anterior de Ben se ve bien.

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