2014-01-31 44 views
0

我有一个现有的ASP.NET MVC 4应用程序,利用视图内的HtmlHelper.BeginForm方法。这个网站现在要坐在一个反向代理之后,它会在网址的路径部分添加一些字符。我希望创建一个扩展方法的HtmlHelper,让我做到以下几点:使用HtmlHelper.BeginForm扩展方法预先添加到URL路径

@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

您可以使用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