我有一个项目,需要将新参数添加到其中一个操作中。当我将参数添加到路由时,项目停止工作。
这就是它工作时的样子。
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>
源
<div class="row">
<form class="sky-form" action="" method="post">
<!-- More Markup and Code Here -->
</form>
</div>
行动
public ActionResult MyAction(AClass view)
{
//code here
}
在研究了网络之后,我发现一个解决方案是在具体动作中添加一条新路由。如果有人有更好的解决方案,请为那些寻求:)的人写下来