我有以下路线:
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?
答案 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 });
这应该可以解决问题。希望这可以帮助! :)