Asp.Net MVC下拉列表所选值消失

本文关键字:消失 下拉列表 Net MVC Asp | 更新日期: 2023-09-27 18:16:34

我有两个动作,我正在传递数据给另一个。当我传递数据第二个动作到第一个动作下拉菜单的选择值消失。我用谷歌搜索了好几个小时,但没有找到。以下是我的代码:

第一个有selectlist和动作代码的动作

第一行动:

 List<SelectListItem> list= new List<SelectListItem>
            {
            new SelectListItem {  Text = "--- Seçiniz----", Value = ""},
            new SelectListItem {  Text = "text1", Value = "11"},
            new SelectListItem { Text = "text2", Value = "12"},
            new SelectListItem {Text = "text3", Value = "13"},
            new SelectListItem {Text = "text4", Value = "14"},
            new SelectListItem { Text = "text5", Value = "15"}
            };
            if (TempData["daire"] != null)
            {
            int daire = Convert.ToInt32(TempData["daire"]);
            ViewBag.daire = new SelectList(list, "Value", "Text", TempData["daire"]);
            model= (folderBL.getAll().Where(k=>k.Id==daire)).ToList();
            }
           else
            {
            ViewBag.daire = new SelectList(list, "Value", "Text","");
            model= folderBL.getAll();
            }

第二个动作,我获取我的SelectList的值并将数据发送给第一个动作。

  public ActionResult SecondAction(string daire)
        {
            TempData["daire"] = daire;
            return RedirectToAction("FirstAction");
        }

和视图。

           @using (Html.BeginForm("SecondAction","MyDashboard",FormMethod.Post))
           {
            @Html.DropDownList("daire", (SelectList)ViewBag.daire, new { id = "mydrop" })
            <td><input type="submit" value="Send" />  
           }

当用户单击按钮和页面刷新后,我如何保持选中的列表项?

----------------------------------------- EDİT ----------------------------------------------

这是解决方案,如果有人需要-->只需更改视图。

@using (Html.BeginForm("SecondAction", "MyDashboard", FormMethod.Post))
{
    @Html.DropDownList("daire")
    <input type="submit" value="Send" />
}

Asp.Net MVC下拉列表所选值消失

如果TempData有值,那么您可以传递int:

if (TempData["daire"] != null)
        {
            int daire = Convert.ToInt32(TempData["daire"]);
            ViewBag.daire = new SelectList(list, "Value", "Text", daire);

,记住TempData是单读的,它将在你读取值后被删除,如果你想保留它,调用TempData.Keep("daire")

问题是ModelState持有下拉列表传递的值在重定向到第一个控制器之前尝试这个。Refere这个

ModelState.Remove("Page");