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

本文关键字:action 参数 有一个 MVC4 是否 | 更新日期: 2023-09-27 18:28:56

请标记为重复-此处已回答

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

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

/Somecontroller/Someaction?action=value

当我尝试访问参数action时,我得到的结果是"Someaction",而不是"value"。

尝试将参数绑定到其他名称也没有帮助。

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

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

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

我还没有测试过这一点,但我认为你可以尝试将默认路由的url更改为操作之外的其他内容

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中使用action作为参数。我不确定你为什么要这样做,我可能会建立一个接受我的操作的路由url,并将其作为类似于以下的url的一部分:

/SomeController/SomeAction/value,其中value是您的"操作"参数。

根据评论编辑:

我成功地创建了一条通往aspx-url的路由的路由

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

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