我已经使用viewbag项目将DIctionary传递给了我的视图。
在我看来,我是他们转换回词典:
var date = veiwbag.Dictionary as Dictionary;
我的DCitionary设置如下: Key =日期字符串(“MMM yyyy”)例如 - 2012年9月 value = int - 数据库中日期与键匹配的条目计数。
我很高兴输出这些Key值对。我需要知道,当suer sleect一个条目时,我可以将字符串Key返回到aciton方法来检索该字符串的所有日期。
我是MVC3的新手,所以有点迷失。
我最初的想法是: (这种语法可能会像从内存那样略微扭曲)
<a href="(@Href("/Posts/Previous/"+ @date.Key))">@date.key (@date.value)</a>
我的控制器有动作:
public ActionResult Previous(string date)
{
..work on data
return View(..my results);
}
ActionResult中的代码很好。该链接将我带到我的ActionResult但字符串为null。如何通过
date.key
作为字符串变量进入ActionResult?我是否会以这种方式解决这个问题?
答案 0 :(得分:0)
如果您使用默认路线,请使用:
public ActionResult Previous(string id)
或您的链接必须如下:
/Posts/Previous?date=sometext
但更好的解决方案是使用@Html.ActionLink
:
@Html.ActionLink(String.Format("{0} ({1})", date.key, date.value), "Previous", "Posts", new { data = date.Key }, null)
答案 1 :(得分:0)
您可以使用HTML帮助程序生成指向此控制器操作的正确链接:
@Html.ActionLink(
string.Format("{0} ({1})", date.key, date.value),
"Previous",
new { date = date.Key }
)
如果您还需要指定控制器名称,则可以使用以下重载:
@Html.ActionLink(
string.Format("{0} ({1})", date.key, date.value),
"Previous",
"Posts",
new { date = date.Key },
null
)
假设已设置默认路由,则会生成以下标记:
<a href="/Posts/Previous?date=SEP%202012">SEP 2012 (9)</a>
当调用Previous控制器操作时,它将成功传递date
的{{1}}参数。