MVC传递查询字符串

时间:2010-04-07 19:24:52

标签: model-view-controller rest

我是Microsoft.MVC的新手,很抱歉,如果这是一个愚蠢的问题。

我创建了一个非常简单的论坛,现在我正在尝试为它创建一些标记功能。

我有一个控制器,索引检索最后10个论坛帖子。我想将一个查询字符串,或类似于Id的东西传递给论坛提供的标签,这样我便可以获得论坛帖子,例如有标签'ASP.NET'。

如果它是一个常规的webforms项目,我只需要将一个带有标签id的查询字符串提供给索引页面,然后使用标签检索论坛帖子,但是在MVC中没有更智能的方法.NET?

我之所以问这个问题,似乎是从REST-urls向后退一步,突然使用“常规”查询字符串?

2 个答案:

答案 0 :(得分:1)

首先定义你的动作(就像你可能已经做过的那样),并添加你需要的参数:

public ActionResult Forum(string tag, int page)
{
    // do your thing
    // ...

    return View();
}

然后,在Global.asax.cs中,您可以添加一个处理您想要的参数的路径。

routes.MapRoute("Forum", "Forum/{tag}/{page}", new {controller = "Home", action = Forum"});

当您转到http://yourhost/Forum链接时,这将导致论坛操作在HomeController上触发。如果你点击这样的链接http://yourhost/Forum/asp.net/1然后“asp.net”将传递给tag参数,1将传递给page参数。

答案 1 :(得分:0)

您可以使用ActionLink html帮助程序。假设你有一个论坛控制器和索引页面,要获得指向/forums/index/1?tag=asp.net的链接,你可以这样做:

Html.ActionLink("ASP.NET", "index", new { id = 1, tag = "asp.net"})