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

时间:2014-08-06 12:45:37

标签: c# asp.net asp.net-mvc asp.net-mvc-4 tempdata

我有两个动作,我将数据传递给另一个。当我将第二个动作传递给第一个动作下拉列表时,所选值就会消失。我用谷歌搜索了几个小时,但我失败了。这是我的代码:

具有选择列表和操作代码的第一个操作。

第一步:

 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的daire值并将数据发送到第一个动作。

  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" />  
           }

当用户点击按钮并刷新页面后,如何保持选定的ListItem?

-----------------------------------------编辑----- -----------------------------------------

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

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

2 个答案:

答案 0 :(得分:1)

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

if (TempData["daire"] != null)
        {

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

并且记住TempData是单一阅读,在您阅读该值后会将其删除,如果您想要保留它,请致电TempData.Keep("daire")

答案 1 :(得分:1)

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

ModelState.Remove("Page");