在ASP.NET MVC中搜索路径

时间:2010-03-30 22:20:57

标签: asp.net asp.net-mvc search routes action

我的母版页中有一个简单的搜索表单和一个serach控制器和视图。 我正在尝试为字符串搜索术语“myterm”获取以下路由(例如): 根/搜索/ myterm

母版页中的表单:

<% using (Html.BeginForm("SearchResults", "Search", FormMethod.Post, new { id = "search_form" }))
                           { %>
                        <input name="searchTerm" type="text" class="textfield" />
                        <input name="search" type="submit" value="search" class="button" />
                        <%} %>

控制器行动:

public ActionResult SearchResults(string searchTerm){...}

我正在使用的路线:

routes.MapRoute(
          "Search",
          "search/{term}",
          new { controller = "Search", action = "SearchResults", term = (string)null }
        );

routes.MapRoute(
          "Default",
          "{controller}/{action}",
          new { controller = "Home", action = "Index" }
        );

无论我输入什么搜索字词,我都会在没有搜索字词的情况下获取网址“root / search”。

感谢。

2 个答案:

答案 0 :(得分:3)

您在beginform标记中使用了ID,在路线中使用了{term}。

两者需要匹配。

答案 1 :(得分:3)

因此,如果我理解正确,您正在尝试创建一条路线,以便您可以转到http://www.whatever.com/search/blah,并且您将被路由到SearchResults操作,其searchTerm参数为“blah”。

以下路线将解决这个问题:

routes.MapRoute(
              "Search",
              "search/{searchTerm}",
              new { controller = "Search", action = "SearchResults" }
            );

确保路线在默认路线之前或首先匹配默认路线。请注意,“term”更改为“searchTerm”以匹配操作中的参数。这是必要的。