0

我已使用 viewbag 项将 DIctionary 传递给我的视图。

在我看来,我正在将他们转换回字典:

var date = veiwbag.Dictionary 作为字典;

我的字典设置为: Key = string of date ("MMM yyyy") eg - SEP 2012 value = int - 这是数据库中日期与键匹配的条目的计数。

我很乐意输出这些键值对。我需要知道如何当 suer 选择一个条目时,我可以将字符串 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 但字符串为空。我如何通过

date.key 

到 ActionResult 作为字符串变量?我会一直这样吗?

4

2 回答 2

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)
于 2012-09-24T10:39:00.950 回答
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>

并且当调用上一个控制器操作时,它将成功date传递SEP 2012.

于 2012-09-24T10:40:02.387 回答