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