0

我有一个与 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"]。请帮助我。

4

3 回答 3

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但它只在下一个请求中存活。它在重定向和想要传递数据时很有用。请参阅此链接以更好地了解差异。

于 2013-06-19T06:39:13.540 回答
1

您应该使用 DropDownListFor 并且 ViewModel 包含 ClientId 字段:

你的视图模型:

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;
}
于 2013-06-19T06:41:32.470 回答
0

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

将您想要的 selectlistitem 设置为选中状态。

于 2013-06-19T06:24:43.387 回答