如何在mvc3中设置Dropdownlist选择的值

时间:2013-06-19 05:57:19

标签: asp.net-mvc-3

我有一个与TempData绑定的下拉列表。当它第一次显示所有值时。在选择一个特定值后,该值正在数据库中正确保存。但是所选的值没有显示。我正在给我的代码如下。

用于检索我已在索引操作控制器中编写

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

在编辑后检索时我无法获得所选的值。我用剃刀写的如下所示

@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--")

我在lstClients中转换了TempData [“Clients”]。请帮助我。

3 个答案:

答案 0 :(得分: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以更好地了解其中的差异。

答案 1 :(得分: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;
}

答案 2 :(得分:0)

你可以在controller.ie中的模型中设置它。当你创建TempData [“Clients”]

设置您想要的selectlistitem。