【发布时间】:2011-02-11 04:33:40
【问题描述】:
我有一本要传递给视图的字典。我希望能够从同一个视图将该字典的值传递回控制器操作。无论如何,这可以在不使用表格的情况下完成吗?情况是我需要能够将这些传递回控制器动作,当用户从视图中单击 ActionLink 时调用该控制器动作,并且根据我的经验,ActionLink 不能用于提交表单的值,即我'只能使用表单的提交按钮提交表单的值。除非有办法使用 ActionLink 在表单中提交值。
Controller Action 在 ViewData 中将 Dictionary 传递给 Controller:
public ActionResult ModifyNewCrossListing(FormCollection form)
{
Dictionary<int, string> prefixlist = new Dictionary<int, String>();
ViewDatap["prefixList"] = prefixlist;
}
View 打印出 Dictionary 的内容,ActionLink 调用另一个控制器动作,这是我要访问字典的地方:
<%int i = 0;
if ((ViewData["prefixList"] as Dictionary<int, string>).Count >= 1)
{
foreach (var cp in (ViewData["prefixList"] as Dictionary<int, string>))
{
if (cp.Value == (ViewData["prefixList"] as Dictionary<int, string>).Last().Value)
{%>
<%= Html.Encode(cp.Value)%>
<%}
else
{%>
<%= Html.Encode(cp.Value)%> -
<%}
}
} %>
<%=Html.ActionLink("View All Criteria", "ShowAllCriteria", new { prefixList = ViewData["prefixList"] as Dictionary<int, string> })%>)
最后,在我的新控制器操作中,我希望能够访问字典
public ActionResult ShowAllCriteria(Dictionary<int, string> prefixList)
{
//Do stuff
}
【问题讨论】:
-
代码将有助于更清楚地解释您的问题。看起来 RedirectToAction() 可能对您的情况有所帮助。
标签: asp.net asp.net-mvc web-applications