使用HtmlHelper.BeginForm扩展方法预先添加到URL路径

时间:2014-01-31 01:23:35

标签: c# asp.net asp.net-mvc html-helper html.beginform

我有一个现有的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">

1 个答案:

答案 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