是否有可能在MVC4中有一个名为action的参数?

时间:2014-11-03 12:12:55

标签: c# asp.net-mvc asp.net-mvc-4

请标记为重复 - Its already answered here

是否可以在MVC4中使用名为action的参数?

尝试这样做会导致参数返回控制器操作的名称而不是参数值。

/Somecontroller/Someaction?action=value

当我尝试访问参数动作时,我将“Someaction”作为结果而不是“value”。

尝试将参数绑定到其他名称也无济于事。

public ActionResult Someaction([Bind(Prefix = "action")] String id)

编辑:我还没有在保留的MVC关键字中找到'Action'/'action'。

1 个答案:

答案 0 :(得分:0)

我还没有对此进行过测试,但我认为您可以尝试将默认路线的网址更改为操作以外的其他内容

routes.MapRoute("Default", "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional });

routes.MapRoute("Default", "{controller}/{cAction}/{id}", 
    new { controller = "Home", cAction = "Index", id = UrlParameter.Optional });

这应该允许您将操作用作Action中的参数。我不确定你为什么要这样做,我可能会建立一个接受我的行动的路线网址并将其作为网址的一部分构建,类似于:

/SomeController/SomeAction/value其中,价值是你的"行动"参数。

根据评论编辑:

我成功创建了一条路径,转到了aspx网址'路径

routes.MapRoute(null, "third-party.aspx", new { controller = "Home", action = "Index" });

显然你可以在这里添加你想要的任何控制器/动作以及你想要处理它的位置,然后通过/third-party.aspx?action=value访问该路线,它似乎对我有用