【问题标题】:ASP.NET: Adding a parameter to the route stops BeginForm from having ActionASP.NET:向路由添加参数会阻止 BeginForm 具有操作
【发布时间】:2017-01-23 05:06:40
【问题描述】:

我有一个项目需要将新参数添加到其中一个操作中。当我将参数添加到路由时,项目停止工作。

这是它工作时的样子。

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id1}/{id2}/{id3}",
            defaults: new { controller = "ControllerName", action = "ActionName", id1 = UrlParameter.Optional, id2 = UrlParameter.Optional, id3 = UrlParameter.Optional }
    );
}

然后我添加新参数id4,项目中断。

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id1}/{id2}/{id3}/{id4}",
            defaults: new { controller = "ControllerName", action = "ActionName", id1 = UrlParameter.Optional, id2 = UrlParameter.Optional, id3 = UrlParameter.Optional, id4 = UrlParameter.Optional }
    );
}

我正在使用网址http://localhost:58481/ControllerName/ActionName/1234567/123456789

我的表单的动作现在没有价值了。如果我把 id4 拿出来,form 属性 action 值就返回了。

编辑 1

HTML

<div class="row">
    @using (Html.BeginForm("MyAction", "MyController", FormMethod.Post, new { @class = "sky-form" }))
    {
        //more markup and code in here
    }
</div>

来源

<div class="row">
    <form class="sky-form" action="" method="post">
        <!-- More Markup and Code Here -->
    </form>
</div>

动作

public ActionResult MyAction(AClass view)
{
    //code here
}

【问题讨论】:

    标签: asp.net routes


    【解决方案1】:

    在网上研究后,我发现一个解决方案是为具体动作添加一条新路线。如果有人有更好的解决方案,请写下来以供寻求:)

    【讨论】:

      猜你喜欢
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      • 2017-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多