Asp.net mvc 5 使用viewdata将数据从控制器传递到视图
我有一个控制器和一个视图,我想填充一个dropdownlist 我的控制器如下所示:Asp.net mvc 5 使用viewdata将数据从控制器传递到视图,asp.net-mvc-5,viewdata,Asp.net Mvc 5,Viewdata,我有一个控制器和一个视图,我想填充一个dropdownlist 我的控制器如下所示: namespace AAA.Controllers { public class BBBController: Controller { [HttpPost] public ActionResult Sort_Order() { List<SelectListItem> liSort = new List<
namespace AAA.Controllers
{
public class BBBController: Controller
{
[HttpPost]
public ActionResult Sort_Order()
{
List<SelectListItem> liSort = new List<SelectListItem>();
liSort.Add(new SelectListItem() { Text = "--Select--", Value = "0", Selected = true });
liSort.Add(new SelectListItem() { Text = "ASC", Value = "1" });
liSort.Add(new SelectListItem() { Text = "DESC", Value = "2" });
ViewData["ddSort"] = liSort;
return View();
}
}
}
@model IEnumerable<AAA.Models.xyz>
@{
ViewBag.Title = "List";
}
<br />
<h2>List</h2>
<table class="table">
<tr>
<th>
Sort order
</th>
</tr>
<tr>
<td>
@using (Html.BeginForm("Sort_Order", "BBB", FormMethod.Post))
{
@Html.DropDownList("Sort", ViewData["ddSort"] as IEnumerable<SelectListItem>, new { @class = "form-control", @style = "width:200px; height:30px" })
}
</td>
</tr>
</table>
namespace AAA.Controllers
{
公共类BBB控制器:控制器
{
[HttpPost]
公共行动结果排序顺序()
{
List liSort=新列表();
添加(新建SelectListItem(){Text=“--Select--”,Value=“0”,Selected=true});
添加(新的SelectListItem(){Text=“ASC”,Value=“1”});
添加(新的SelectListItem(){Text=“DESC”,Value=“2”});
ViewData[“ddSort”]=liSort;
返回视图();
}
}
}
我的观点是这样的:
namespace AAA.Controllers
{
public class BBBController: Controller
{
[HttpPost]
public ActionResult Sort_Order()
{
List<SelectListItem> liSort = new List<SelectListItem>();
liSort.Add(new SelectListItem() { Text = "--Select--", Value = "0", Selected = true });
liSort.Add(new SelectListItem() { Text = "ASC", Value = "1" });
liSort.Add(new SelectListItem() { Text = "DESC", Value = "2" });
ViewData["ddSort"] = liSort;
return View();
}
}
}
@model IEnumerable<AAA.Models.xyz>
@{
ViewBag.Title = "List";
}
<br />
<h2>List</h2>
<table class="table">
<tr>
<th>
Sort order
</th>
</tr>
<tr>
<td>
@using (Html.BeginForm("Sort_Order", "BBB", FormMethod.Post))
{
@Html.DropDownList("Sort", ViewData["ddSort"] as IEnumerable<SelectListItem>, new { @class = "form-control", @style = "width:200px; height:30px" })
}
</td>
</tr>
</table>
@model IEnumerable
@{
ViewBag.Title=“列表”;
}
列表
排序顺序
@使用(Html.BeginForm(“Sort_Order”,“BBB”,FormMethod.Post))
{
@DropDownList(“Sort”,ViewData[“ddSort”]作为IEnumerable,新的{@class=“form control”,@style=“width:200px;height:30px”})
}
当我运行此命令时,我得到一个错误:
没有键为“Sort”的“IEnumerable”类型的ViewData项*
有人能帮助我并告诉我我做错了什么吗?您需要在GET方法中初始化
ViewData[“ddSort”]
。然后你可以在你的视图中使用它
[HttpGet]
public ActionResult Sort_Order()
{
List<SelectListItem> liSort = new List<SelectListItem>();
liSort.Add(new SelectListItem() { Text = "--Select--", Value = "0", Selected = true });
liSort.Add(new SelectListItem() { Text = "ASC", Value = "1" });
liSort.Add(new SelectListItem() { Text = "DESC", Value = "2" });
ViewData["ddSort"] = liSort;
return View();
}
[HttpGet]
公共行动结果排序顺序()
{
List liSort=新列表();
添加(新建SelectListItem(){Text=“--Select--”,Value=“0”,Selected=true});
添加(新的SelectListItem(){Text=“ASC”,Value=“1”});
添加(新的SelectListItem(){Text=“DESC”,Value=“2”});
ViewData[“ddSort”]=liSort;
返回视图();
}
可能的重复项您是否也在GET方法中填充了ViewData[“ddSort”]
?我对这一点很陌生,所以您能否通过“在GET方法中是否也填充了ViewData[“ddSort”]”来解释您的操作?您所显示的只是[HttpPost]
方法-您需要在[HttpGet]
方法中使用相同的代码(即设置ViewData[“ddSort”]=liSort;
)好的,我不明白。我按你说的做了(我希望如此),但仍然不起作用。你是否可以编写代码,以便我进行比较?谢谢。