在单击HTML按钮(不提交或表单的帖子按钮)Asp.net MVC上调用控制器的特定操作

时间:2013-03-01 13:44:46

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

当我们单击Form的提交按钮时,会调用具有HTTPPost属性的控制器的操作,但是如果我想在单击普通HTML按钮时调用或执行操作该怎么办? 虽然有以下文章

http://www.codeproject.com/Tips/198477/Calling-a-MVC-Controller-and-Action-Method-using-H

HTML button calling an MVC Controller and Action method

告诉方法,但这两个都在视图中使用控制器名称,所以视图必须知道控制器,我正在寻找一个视图不必知道控制器的答案。 因为视图必须与Controller无关,所以Views不应该知道控制器 所以,如果您知道答案,请回复

3 个答案:

答案 0 :(得分:16)

将您的用户定向到由

创建的网址的任何表单
<a href='@Url.Action("{action}", "{controller}")'> click me </a> 

@using(BeginForm("{action}", "{controller}")

会做你想要的。

可以使用

  • 表格
  • 按钮链接

这是重要的目的地。 View不会“知道”有关动作或控制器的任何信息。帮手呢。

答案 1 :(得分:0)

要从客户端(即从视图)执行MVC操作,您需要点击URL(使用任何动词:get,post,put等)。 因此,要从视图执行操作,您需要知道该操作的URL,默认情况下,该URL直接映射到controllername/actionname,但如果要在视图和视图之间创建更多抽象,则可以重新定义此操作。控制器。

鉴于此,您的按钮只需要是指向URL的链接或链接到js以执行Ajax http请求。

希望有所帮助。

答案 2 :(得分:0)

您不能在具有相同名称和相同HTTP谓词的同一控制器上执行2个操作。所以你问的是没有意义的。您可以调用与呈现视图的控制器操作相同的控制器操作,而无需指定操作和控制器名称。 Html.BeginForm()未指定操作和控制器名称的原因是因为表单正在向服务器发送POST请求,您可以区分这两个操作。