【问题标题】:Using HtmlHelper.BeginForm Extension Method To Prepend To URL Path使用 HtmlHelper.BeginForm 扩展方法添加到 URL 路径
【发布时间】:2014-01-31 01:23:35
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多