我遇到了PartialView
中的下拉列表问题。
基本上会收到以下错误
There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'Status'.
这是控制器内的ActionResult
方法
[HttpGet]
public ActionResult Status()
{
List<SelectListItem> Status = new List<SelectListItem>();
Status.Add(new SelectListItem { Text = "Open", Value = "1" });
Status.Add(new SelectListItem { Text = "Closed", Value = "2" });
Status.Add(new SelectListItem { Text = "Delete", Value = "3" });
ViewData["Status"] = Status;
return View();
}
我的Status
部分视图,我在其中调用选择列表
@Html.DropDownList("Status", ViewData["Status"] as SelectList)
然后我从主视图中调用部分视图,如下所示
@Html.Partial("Status")
我只是不确定为什么会出现上述错误。我看了这个asp.net mvc dropdownlist no ViewData item,仍然无法纠正这个问题?
更新
根据@MikeDebela解决方案,我的状态行动项从未被调用过。因此使用以下语法直接调用Action
@{Html.RenderAction("Status");}
答案 0 :(得分:3)
当您使用Partial
帮助程序时,运行时会查找视图并呈现一个字符串(您的操作永远不会被执行)。另一方面,RenderAction
执行操作并显示结果。所以,使用:
@{Html.RenderAction("Status");}
答案 1 :(得分:0)
@Html.DropDownList("Status", new SelectList((System.Collections.IEnumerable) ViewData["Status"],"Text","Value"))
您可以使用此行填充带有ViewData的下拉列表
答案 2 :(得分:0)
请检查代码如下,因为它正在与我合作
public ActionResult Index()
{
List<SelectListItem> Status = new List<SelectListItem>();
Status.Add(new SelectListItem { Text = "Open", Value = "1" });
Status.Add(new SelectListItem { Text = "Closed", Value = "2" });
Status.Add(new SelectListItem { Text = "Delete", Value = "3" });
ViewData["Status"] = Status;
return View();
}
@Html.DropDownList("Status", new SelectList((System.Collections.IEnumerable)ViewData["Status"], "Value", "Text"))
或者您可以使用
@Html.DropDownList("Status", (IEnumerable<SelectListItem>)ViewData["Status"])