Ah malentendido esto.
Si sabes qué Dropdowns se pueden agregar, siempre tendría un valor en tu modelo. MVC los establecerá como un valor predeterminado si no se recibe nada.
EDIT: Usted todavía puede acceder a la colección de formularios de una manera más cruda de controladores withing usando
Request.Form.Keys
Request.QueryString.Keys
Request["ExpectedDropdownName"]
Por supuesto, estas serán todos los valores publicados por su forma por lo que tendrá una forma de reconocer una de tus menús desplegables como un prefijo o algo. Por ejemplo
foreach (var key in Request.Form.AllKeys.Where(k => k.StartsWith("dynamic-dropdown-"))
{
var selectedValue = Request[key];
}
Todavía no entiendo muy bien cómo se va a procesar los menús desplegables dinámicas, si usted no sabe lo que van a ser y esto puede causar algunos problemas y hará que la validación totalmente dinámico y el lado del cliente (no es 100% seguro). Eso podría presentar también algunos problemas de seguridad, pero hay algunos casos en los que podría usar esto y supongo que tiene uno de ellos.
Si ese no es el caso, no olvide que solo porque un Modelo tiene una propiedad, no tiene que volverse a publicar.
Se podría hacer:
public class MyModel
{
[Required]
public string FirstName { get; set; }
public string PossibleDropdown1 { get; set; }
public string PossibleDropdown2 { get; set; }
}
El controlador hará lo mejor es para poblar el modelo, pero si usted no pasa algunos campos de vuelta de la forma, que sólo será nula y la acción son todavía trabajo.
También he implementado escenarios mucho más complejos como este usando objetos que son hijos del modelo principal y todos los nulos. Eso requiere un poco de trabajo sofisticado alrededor de las llamadas de ajax a EditorTemplates en vistas simuladas para garantizar que prefixing sea correcto para MVC analizar, pero no entraré en eso aquí.
¿Ha intentado utilizar ajax –
@COLDTOLD Este es un problema del lado del servidor, Ajax no es una solución que tenga ningún impacto –
@Marek Karbarz puede actualizar parte parcial de la página mediante la adición de nuevos elementos, con ajax –