Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 如何在mvc3中设置Dropdownlist选择值_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 如何在mvc3中设置Dropdownlist选择值

Asp.net mvc 3 如何在mvc3中设置Dropdownlist选择值,asp.net-mvc-3,Asp.net Mvc 3,我有一个与TempData绑定的dropdownlist。当它第一次出现时,它会显示所有值。选择特定值后,该值会正确地保存在数据库中。但所选值不会显示。我在下面给出我的代码 为了检索,我在索引操作控制器中编写了 TempData["Clients"] = (IEnumerable<SelectListItem>)ClientService.GetALLClientsName().Select(C=>new SelectListItem { Value=C.CLIENT_ID.T

我有一个与TempData绑定的dropdownlist。当它第一次出现时,它会显示所有值。选择特定值后,该值会正确地保存在数据库中。但所选值不会显示。我在下面给出我的代码

为了检索,我在索引操作控制器中编写了

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

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

您可以在controller.ie中的model中设置它,当您创建TempData[“Clients”]

将所需的selectlistitem设置为选中项

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


TempData
有不同的用法。它的行为类似于会话,但它只在下一个请求中生存。它在重定向和传递数据时非常有用。请参阅以更好地理解差异。

您应该使用DropDownListFor和ViewModel包含客户端ID字段:

YourViewModel:

public class YourViewModel{
    public int ClientId {get;set;}
}
视图:

在Clients.cs中(例如):

publicstaticlist GetClientsList(int-client)
{
var dataContext=newyourdatacontext();
var data=dataContext.GetModelsFn(client.ToList();
var结果=(来自数据中的res)
选择新的SelectListItem()
{
Text=res.ClientName,
Value=res.ClientId.ToString(),
Selected=res.ClientId==client
})。ToList();
返回结果;
}

您不能将下拉数据保存在TempData中。使用ViewBag或ViewData代替标题我不能使用dropdownlistfor。@阿弥陀佛我不知道他在控制器中的代码,这是如何正确操作的示例。他会将我的硬编码值更改为他自己的变量值。我写了评论“例如”来说明这一点:)
@Html.DropDownList("drpClientName", (SelectList)ViewBag.Clients, "--Select--")
public class YourViewModel{
    public int ClientId {get;set;}
}
@Html.DropDownListFor( x => x.ClientId, new SelectList( Clients.GetClientsList(Model.ClientId), "Value", "Text", Model.ClientId))
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;
}