2013-06-19 32 views
0

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

对于检索我已经写在指数动作控制器

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 [“Clients”]在lstClients.Please帮助我。

+1

你不应该保存下降关闭TempData中的数据。使用ViewBag或ViewData代替 – karaxuna

回答

0

当您创建的TempData [“客户”]

设置要与所选的selectlistitem您可以设置在controller.ie模型。

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

为什么你使用硬编码选择的值/ – amitabha

+0

@amitabha我不知道他在控制器中的代码,这就是例子如何做到这一点。他会将我的硬编码值改为他自己的变量值。我写了评论“例如”注意到这一点:) – karaxuna

1

您应该使用DropDownListFor和视图模型包含客户端Id字段:

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

相关问题