Estoy tratando de aprender MVC2, C# y Linq a entidades todo en un proyecto (sí, estoy enojado) y estoy teniendo algunos problemas con DropDownListFor y pasándole la lista de selección.ASP.Net MVC2 DropDownListFor
Este es el código en mi controlador:
public ActionResult Create()
{
var Methods = te.Methods.Select(a => a);
List<SelectListItem> MethodList = new List<SelectListItem>();
foreach (Method me in Methods)
{
SelectListItem sli=new SelectListItem();
sli.Text = me.Description;
sli.Value = me.method_id.ToString();
MethodList.Add(sli);
}
ViewData["MethodList"] = MethodList.AsEnumerable();
Talkback tb = new Talkback();
return View(tb);
}
y estoy teniendo problemas tratando de conseguir el DropDownListFor
para tomar el MethodList
en ViewData
. Cuando intento:
<%:Html.DropDownListFor(model => model.method_id,new SelectList("MethodList","method_id","Description",Model.method_id)) %>
errores a cabo con el siguiente mensaje
DataBinding: 'System.Char' does not contain a property with the name 'method_id'.
sé por qué esto es, ya que se está llevando MethodList
como una cadena, pero no puedo encontrar la manera de llegar tomar el SelectList
. Si hago lo siguiente con una normal de DropDownList
:
<%: Html.DropDownList("MethodList") %>
Es bastante contento con esto.
¿Alguien puede ayudar?
La clase Talkback es una clase de tabla L2E. Contiene un method_id que tiene una relación 0..1 con la tabla Methods, por lo tanto, solo tengo la propiedad de method_id Scalar de la tabla de Talkback y la propiedad de navegación de Método para el Método particular relacionado con el id_método de ese registro. Para que pueda obtener el método relacionado con un registro de talkback en particular que, como se trata de una acción de creación, sería nulo de todos modos. Sin embargo, no puedo acceder a todos los métodos a través del modelo de Talkback. ¡Espero que tenga sentido! – hermiod
Actualizado con código adicional. ¡Prueba esto y mira si eso funciona para ti! – Tejs
Ahora aparece el error 'No hay sobrecarga para el método' DropDownListFor 'toma 1 argumentos'. Quizás no entendí MVC pero pensé que sería posible generar todas las Vistas desde el propio modelo de Base de Datos y modificarlas según sea necesario. He visto algunos ejemplos de pasar listas arbitrarias a la vista (a través de ViewData, que se basaba en mi código original), ¿hay alguna manera de hacer que esto funcione en mi situación? Gracias por su ayuda Tejs – hermiod