【问题标题】:Passing Dictionary Key back to view将字典键传递回视图
【发布时间】:2012-09-15 19:18:02
【问题描述】:

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

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

var date = veiwbag.Dictionary as Dictionary;

我的字典设置为: 键 = 日期字符串(“MMM yyyy”)例如 - 2012 年 9 月 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?我会一直这样吗?

【问题讨论】:

    标签: asp.net-mvc-3 c#-4.0


    【解决方案1】:

    您可以使用 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>
    

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

    【讨论】:

      【解决方案2】:

      如果你使用默认路由,那么使用:

      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-12-10
        • 2016-08-22
        • 2018-03-23
        • 1970-01-01
        • 1970-01-01
        • 2021-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多