MVC ASP.NET 地图路由不适用于表单 GET 请求
MVC ASP.NET Map routing is not working with form GET request
在视图中-
@using (Html.BeginForm("PageName","ControllerName", FormMethod.Get))
{
<input type="hidden" name="categoryName" value="Insurance" />
<input type="hidden" id="cityName6" value="Irvine" name="cityName" />
<input type="hidden" name="page" value="1" />
<input type="submit" class="btn btn-default" value="Insurance" />
}
在RouteConfig-
routes.MapRoute(
"SomethingRouteName",
"{categoryName}/{cityName}/{page}",
new { controller = "ControllerName", action = "PageName" }
);
我希望 url 看起来像这样 - Insurance/Irvine/1
但它的到来是这样的- ControllerName/PageName?categoryName=Insurance&cityName=Irvine&page=1
当我使用超链接而不是表单获取方法时,这工作正常。
@Html.ActionLink("Insurance", "PageName", "ControllerName", new{ categoryName = "Insurance", cityName = "Irvine", page = 1})
//URL 显示:Insurance/Irvine/1 符合预期。
但是我必须使用表单GET方法,所以这种超链接方式没有用。
请帮忙
您没有将任何路由值传递给 Html.BeginForm
,因此呈现的表单元素如下所示:
<form action="/ControllerName/PageName" method="get">
</form>
所以当您点击提交时,它只是将表单的值附加为查询字符串。
解决这个问题:
@using (Html.BeginForm("PageName", "Home", new {categoryName = "Insurance", cityName = "Irvine", page = "1"}, FormMethod.Get))
{
<input type="submit" class="btn btn-default" value="Insurance" />
}
在视图中-
@using (Html.BeginForm("PageName","ControllerName", FormMethod.Get))
{
<input type="hidden" name="categoryName" value="Insurance" />
<input type="hidden" id="cityName6" value="Irvine" name="cityName" />
<input type="hidden" name="page" value="1" />
<input type="submit" class="btn btn-default" value="Insurance" />
}
在RouteConfig-
routes.MapRoute(
"SomethingRouteName",
"{categoryName}/{cityName}/{page}",
new { controller = "ControllerName", action = "PageName" }
);
我希望 url 看起来像这样 - Insurance/Irvine/1 但它的到来是这样的- ControllerName/PageName?categoryName=Insurance&cityName=Irvine&page=1
当我使用超链接而不是表单获取方法时,这工作正常。
@Html.ActionLink("Insurance", "PageName", "ControllerName", new{ categoryName = "Insurance", cityName = "Irvine", page = 1})
//URL 显示:Insurance/Irvine/1 符合预期。 但是我必须使用表单GET方法,所以这种超链接方式没有用。
请帮忙
您没有将任何路由值传递给 Html.BeginForm
,因此呈现的表单元素如下所示:
<form action="/ControllerName/PageName" method="get">
</form>
所以当您点击提交时,它只是将表单的值附加为查询字符串。
解决这个问题:
@using (Html.BeginForm("PageName", "Home", new {categoryName = "Insurance", cityName = "Irvine", page = "1"}, FormMethod.Get))
{
<input type="submit" class="btn btn-default" value="Insurance" />
}