如何让页面上的每个按钮/链接在ASP.NET MVC 2应用程序中执行它自己的操作?

时间:2011-11-01 16:55:11

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

我正在使用带有C#的ASP.NET MVC 2。根据我开发的应用程序的要求,每个视图都有几个按钮,它们执行相同的Controller Post操作。目前,要知道在发布操作时单击了哪个按钮,我在名为PageAction的表单上使用了隐藏字段。单击任何按钮时,此字段设置为一个值。这在此视图的POST操作的控制器实现中引起了相当多的问题,因为我必须针对通过PageAction提交的值执行case语句。这是其中一件似乎可以做得更好更简单的事情。

有没有办法让单个视图有多个动作?这样每个按钮都会将表单发布到它自己的控制器动作(但所有这些都与相同的视图相关)。我想摆脱检查PageAction值的“魔术字符串”;但是,所有这些按钮都是同一个html表单的一部分,所以我不确定除了将每个按钮分成它自己的形式或者每个按钮动态地改变表单发布的位置之外,这是怎么可能的。后两种选择听起来都比我现在做的更复杂。

欢迎所有建议/意见。谢谢!

编辑1

我已经浏览了这里链接的博客帖子:http://blog.ashmind.com/2010/03/15/multiple-submit-buttons-with-asp-net-mvc-final-solution/并复制了这些功能,但我想知道......如果页面上的按钮名称在一个页面中的几个不同页面上标准化,这将如何工作?应用?博客文章似乎假设与控制器中的操作名称匹配的不同按钮名称,但在我的情况下,这将不够独特。

2 个答案:

答案 0 :(得分:2)

您可能会发现following blog post有用,它说明了自定义ActionNameSelectorAttribute的用法。

答案 1 :(得分:0)

也许您应该考虑使用AJAX调用而不是表单帖子?如果他们想要在同一页面上执行不同的操作,大多数人都会这样做。