Digamos que tengo un LineItem (del ejemplo de Carrito de Compras usado en exceso) y quiero renderizarlo usando un EditorTemplate.Pasar datos adicionales a EditorTemplate
Estoy perfectamente bien usando un @ Html.EditorFor (m => m.LineItems) desde la vista principal (parcial o de otro tipo), pero lo que es confuso es el mejor enfoque para pasar algunos datos adicionales (por ejemplo, SelectList que tiene datos procedentes de la base de datos) a la plantilla.
Está claro que no se debe contaminar el modelo de LineItem incorporando estos elementos extraños (que sin embargo se requieren desde la perspectiva de una vista.)
Estoy tratando de ver si hay una manera inflexible de hacer esto antes de recurrir a los trucos ViewBag/ViewData.
He intentado crear un modelo de vista específico 'LineItem' para pasar los datos, pero destruye los nombres generados por MVC y los anuncios una capa adicional a la colección (como paso en un IEnumerable <> del viewmodel a la llamada EditorFor(), en lugar de IEnumerable <> del elemento LineItem real)
Además, ¿se trata de un uso incorrecto de EditorTemplate? ¿Es un elemento LineItem que requiere un menú desplegable que tiene demasiadas opciones provenientes de una tabla de base de datos para un EditorTemplate?
Por favor, guíame hacia el MVC nirvana. Mientras espero las respuestas, probaré otras ideas.
Para aclarar: El motivo por el que estoy considerando utilizar EditorTemplate es debido al manejo automático de la colección que me proporciona. De lo contrario, todo el negocio [id] se vuelve demasiado pegajoso.
¿No puede usar un dispositivo ChildAction para esto? – alexn
¿Ha resuelto este problema desde entonces? –
La acción infantil no es la mejor manera de crear IU de entrada. Resolví este problema usando una variación del método de Steven Sanderson (http://blog.stevensanderson.com/) para generar una lista de vistas parciales. – kidoman