ASP.NET:向路由添加参数会使BeginForm停止运行

时间:2017-01-23 05:06:40

标签: asp.net routes

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

这就是它工作时的样子。

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,则表单属性操作值返回。

编辑1

HTML

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

SOURCE

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

动作

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

1 个答案:

答案 0 :(得分:0)

在研究网络后,我发现解决方案是为特定操作添加新路由。如果有人有更好的解决方案,请写下来寻求:)