ASP.NET允许的动作命名?

时间:2012-04-02 22:54:07

标签: asp.net-mvc

我有一个可以通过三种方式访问​​的视图:

1。空表单 - 从菜单初始获取

[HttpGet]
public ActionResult GetMe() 

2。表单提交后填充的表单(选择下拉值后)

[HttpPost]
public ActionResult GetMe(int firstDropdownValue)

第3。通过javascript从另一个页面请求后填充。这是一个GET。

[HttpGet]
public ActionResult GetMe(int secondDropdownValue, int thirdDropdownValue)

问题是#3与#1冲突,因为不允许两个获取相同的ActionName。我可以给#3一个不同的动作名称,但我真的希望两者在URL中显示相同的名称。

我查看了[ActionName]属性,但我认为它不能帮助我。有解决方法吗?

2 个答案:

答案 0 :(得分:0)

@Andrew Barber是对的。暂时忘掉MVC,你不能有两个具有相同签名的方法。它们可以组合成一个。

[HttpGet]
public ActionResult GetMe() 

[HttpPost]
[ActionName("GetMe")]
public ActionResult GetMeHttpPost(int dropDownValue)

这当然意味着您需要更改第3个选项(JS)来执行POST而不是GET。如果这是一个问题,您需要第三个操作与单独的URL。

虽然我没有设想需要JavaScript来“获取”整个页面的场景 - 它不应该是返回PartialViewResult的子操作吗?

答案 1 :(得分:0)

修复编译错误后,可以将#1和#3与可以为空的int结合使用。

[HttpGet]
public ActionResult GetMe(int? dropDownValue)