2013-06-19 6 views
0

У меня есть раскрывающийся список, который привязан к TempData.when он приходит в первый раз, он показывает все значения. После выбора определенного значения, которое значение сохраняет в базе данных правильно. Но выбранный значение не отображается. Я даю свой код ниже.Как установить выбранное значение Dropdownlist в mvc3

Для извлечения я написал в контроллере индекс действия

TempData["Clients"] = (IEnumerable<SelectListItem>)ClientService.GetALLClientsName().Select(C=>new SelectListItem { Value=C.CLIENT_ID.ToString(),Text=C.CLIENT_NAME}); 

при получении после редактирования я не могу получить выбранный value.I написал в бритве, как это ниже

@if (TempData["SelectedClientName"] != null && TempData["SelectedClientId"] != null) 
         { 
          foreach (SelectListItem sli in lstClients) 
          { 
           if (sli.Value.Equals(TempData["SelectedClientId"].ToString())) 
           { 
            sli.Text = TempData["SelectedClientName"].ToString(); 
            sli.Value = TempData["SelectedClientId"].ToString(); 
            sli.Selected = true; 
            break;  

           } 
          } 

         } 

         @Html.DropDownList("drpClientName", lstClients, "--Select--") 

Я преобразовал TempData ["Клиенты"] в lstClients.Пожалуйста, помогите мне.

+1

Вы не должны экономить падение вниз данные в TempData. Вместо этого используйте ViewBag или ViewData. – karaxuna

ответ

0

вы можете установить, что в модели controller.ie При создании TempData [ «Клиенты»]

установить selectlistitem, что вы хотите, как выбран.

1
public ActionResult Index(){ 
    var selectedClientId = 5; // for example (change it with your variable) 
    ViewBag.Clients = new SelectList(ClientService.GetALLClientsName(), 
           "CLIENT_ID", "CLIENT_NAME", selectedClientId) 
} 

Вид:

@Html.DropDownList("drpClientName", (SelectList)ViewBag.Clients, "--Select--") 

TempData имеет различное использование. Это поведение похоже на Session, но оно выживает только в следующем запросе. Это полезно при перенаправлении и передаче данных. См. this link, чтобы лучше понять разницу.

+0

Почему вы выбрали значение hardcode/ – amitabha

+0

@amitabha Я не знаю его кода в контроллере, вот пример того, как это сделать правильно. Он изменит мое hardcoded значение на его собственное значение переменной. Я написал комментарий «например», чтобы отметить это :) – karaxuna

1

Вы должны использовать DropDownListFor и ViewModel содержит ClientId поле:

YourViewModel:

public class YourViewModel{ 
    public int ClientId {get;set;} 
} 

Вид:

@Html.DropDownListFor(x => x.ClientId, new SelectList(Clients.GetClientsList(Model.ClientId), "Value", "Text", Model.ClientId)) 

в Clients.cs (например,):

public static List<SelectListItem> GetClientsList(int client) 
{ 
    var dataContext = new YourDataContext(); 
    var data = dataContext.GetModelsFn(client).ToList(); 

    var result = (from res in data 
       select new SelectListItem() 
          { 
           Text = res.ClientName, 
           Value = res.ClientId.ToString(), 
           Selected = res.ClientId == client 
          }).ToList(); 

    return result; 
} 
+0

Я не могу использовать dropdownlistfor. – amitabha

Смежные вопросы