创建与表单匹配路由的URL

时间:2010-08-11 02:48:56

标签: asp.net-mvc asp.net-mvc-routing

我有以下路线:

routes.MapRoute(
            "PlayerSearch",
            "Players/{playername}",
            new {controller = "Players", action = "Get"});    

如果我转到http://mydomain/players/playername,这是有效的。

我还有一个允许用户按名称查找玩家的表单:

<% using (Html.BeginForm("Get", "Players"))
                    {
                    %>
                    <%=Html.Label("player name")%>
                    <%=Html.TextBox("playername")%>
                    <input type="submit" value="submit" /> 
                <%
                    }%>

这样可行,但网址现在为http://mydomain/players/Get。我希望它与上面的直接URL是相同的URL。我确信这是无知(可能是重复但我无法找到它),但我无法让它工作。如何使用路由获取表单以显示所需的URL?

1 个答案:

答案 0 :(得分:1)

好吧,似乎你需要做这样的事情:

<% using (Html.BeginRouteForm("PlayerSearch", FormMethod.Post))
                {
                %>
                <%=Html.Label("player name")%>
                <%=Html.TextBox("playername")%>
                <input type="submit" value="submit" /> 
            <%
                }%>

你必须告诉玩家名称是可选的路线:

routes.MapRoute(
        "PlayerSearch",
        "Players/{playername}",
        new { controller = "Players", action = "Get", playername = UrlParameter.Optional });   

这应该可以解决问题。希望这可以帮助! :)