我有两个动作,我将数据传递给另一个。当我将第二个动作传递给第一个动作下拉列表时,所选值就会消失。我用谷歌搜索了几个小时,但我失败了。这是我的代码:
具有选择列表和操作代码的第一个操作。
第一步:
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" />
}
答案 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");