2009-08-19 31 views
44

OK, he estado buscando en Google durante horas y probando todo, y no puedo hacer que nada funcione. Estoy aprendiendo MVC usando Sharp Architecture y he generado algunas formas básicas para crear objetos de Cliente. Quiero completar la lista desplegable de estado con una lista de estados de EE. UU. Y dejar que el usuario elija de esa lista. Puedo completar la lista y recuperar el valor (para guardar el cliente), pero cuando voy a editar el cliente, el estado actual del cliente no está seleccionado. Establecí el valor seleccionado en la Lista de selección:Poblar ASP.NET MVC DropDownList

<li> 
    <label for="Client_StateProvince">StateProvince:</label> 
    <div> 
     <%= Html.DropDownListFor(c=>c.Client.StateProvince, new SelectList(Model.StateProvinces, "id", "Name", Model.Client.StateProvince), "-- Select State --")%> 
    </div> 
    <%= Html.ValidationMessage("Client.StateProvince")%> 
</li> 

Esto no parece ser lo suficientemente bueno. ¿Qué me estoy perdiendo?

+0

Por favor, considere reescribir el título de su pregunta para ser más específico. –

+1

Lo que tenía que hacer es tener una página de edición donde edito la información de un (objeto de dominio), en este caso un objeto de Cliente. cuando voy a editarlo, necesitaba que la parte de estado del formulario fuera un menú desplegable con una lista de estados (material estándar), pero después de que se rellena cuando estoy en modo de edición, necesito que seleccione el estado de el objeto actualmente editable. Estaba rellenando el menú desplegable, pero el estado actual no fue seleccionado. una vez que establecí el nombre de DropDownList (representado por lambda aquí) en el ID del estado (el valor que estoy usando para el campo de valor en la lista desplegable) estaba listo para continuar. – leebrandt

Respuesta

78
<%= Html.DropDownListFor(c => c.Client.StateProvince.Id, 
           new SelectList(Model.StateProvinces, 
              "id", 
              "Name", 
              Model.Client.StateProvince), 
           "-- Select State --")%> 

Esto lo hace.

Espero que esto ayude a alguien más.

~ Lee

+0

Tiene razón, el primer parámetro debe ser del mismo tipo que el último. ¡Funcionó para mí también! Gracias. –

7

funcionado perfectamente para mí Gracias! Lo utilicé para establecer una relación de los padres en una subcategoría:

<%= Html.DropDownListFor(
model => model.Category.ParentId, 
new SelectList(Model.Categories, 
"CategoryId", 
"Name", 
    Model.Categories.Where(x => x.CategoryId == Model.Category.ParentId).Single()))%> 

Jeroen

2
<%= Html.DropDownListFor(c => c.Client.StateProvince, new SelectList(Model.StateProvinces, "Id", "Name")) %> 

y anular ToString() para StateProvince para volver Id, es decir:

return Id.ToString(); 

Esto funciona, pero no es una solución perfecta ...

Dennis

+0

¡Esta es la única solución que me ayudó! ¡Gracias! –

4

Lo hice de esta manera. Funciona bien.

controlador

IFarmModelInterface service2 = new FarmModelRepository(); 
ViewData["Farms"] = new SelectList(service2.GetFarmNames(), "id", "FarmName", "XenApp"); 

Ver

<%: Html.DropDownListFor(m => m.Farm, (ViewData["Farms"] as SelectList)) %> 
3
public ActionResult AllUsers() 
{ 
    List<Users> users = userRep.GetUsers(); 
    var listUsers = (from u in users.AsEnumerable() 
        select new SelectListItem 
        { 
         Text = u.UserName, 
         Value = u.UserId.ToString(), 
         Selected = (u.UserId==6) 
        }).AsEnumerable(); 
    ViewBag.ListItems = listUsers; 
    //ViewBag.SelectedItem = 2; 
    return View(); 
} 

En AllUsers.cshtml

<p>@Html.DropDownList("ListItems")</p> 
0
public ActionResult AllUsers() { 
    List<Users> users = userRep.GetUsers(); 
    var listUsers = (from u in users.AsEnumerable() 
        select new SelectListItem 
        { 
         Text = u.UserName, 
         Value = u.UserId.ToString(), 
         Selected = (u.UserId==6) 
        }).AsEnumerable(); 
    // ViewBag.ListItems = listUsers; 
    ViewData["tempEmpList"]=listUsers; 
    return View(); } 

Desplegable de relleno

@Html.DropDownList("SelectedEmployee", new SelectList((IEnumerable) ViewData["tempEmpList"], "Id", "Name"))

0

Esta es Vista - Controlador MVC

@Html.DropDownListFor(m => m.Entity, new ABC.Models.DropDownPopulate().MyMethod, new { @class = "form-control input-inline input-medium" }) 

myMethod obtener la lista de datos se unen con desplegable SelectListItems Uso

public List<SelectListItem> MyMethod 
     { 
      get 
      { 
       List<SelectListItem> dropdownList = new List<SelectListItem>(); 
       var items = new DropDown_Bl().GetAll(); 
       foreach (var item in items) 
       { 
        SelectListItem dropdownItem = new SelectListItem(); 
        dropdownItem.Value = item.RnID.ToString(); 
        dropdownItem.Text = item.Description; 
        dropdownList.Add(dropdownItem); 
       } 
       dropdownList.Insert(0, new SelectListItem() { Text = "Please Select", Value = "", Selected = true }); 
       return dropdownList; 
      } 
     } 

GetAll Método En Dropdown_Bl - Usado para obtener datos como lista de la base de datos

public List<My_Table> GetAll() 
     { 
      var Items = _Context.MyRepository.GetMany(q => q.Area == "ASD").ToList(); 
      return Items ; 
     } 
Cuestiones relacionadas