我有一个现有的ASP.NET MVC 4应用程序,它使用视图中的HtmlHelper.BeginForm方法。该站点现在将位于反向代理后面,该代理将在URL的路径部分中添加一些字符。我希望为HtmlHelper创建一个扩展方法,允许我执行以下操作:
@using (Html.BeginForm("ActionName", "MyControllerName", FormMethod.Post, new { @class = "my-class" })){
并且能够修改输出:
<form method="POST" action="/MyController/ActionName" class="my-class">
代替以下内容:
<form method="POST" action="/Some/Prepended/Path/MyController/ActionName" class="my-class">
答案 0 :(得分:0)
您可以使用FormExtensions.BeginRouteForm
方法来实现此目的。
首先,在RouteConfig
类中创建一条路线,如下所示:
routes.MapRoute(
name: "FormRoute",
url: "Some/Prepended/Path/{controller}/{action}"
);
然后使用Html.BeginRouteForm
@using (Html.BeginRouteForm("FormRoute", new { },
FormMethod.Post, new { @class = "my-class" })){}
最后,您可以调用以下操作方法:
http://localhost:57744/Some/Prepended/Path/YourController/YourAction
有关FormExtensions.BeginRouteForm方法的更多详细信息,请参阅以下链接: http://msdn.microsoft.com/en-us/library/dd505047(v=vs.118).aspx