C# 单击HTML按钮(而不是提交或表单的post按钮)Asp.net MVC调用控制器的特定操作
当我们单击表单的submit按钮时,会调用具有HTTPPost属性的控制器的操作,但如果我想在单击普通HTML按钮时调用或执行操作,该怎么办 尽管有以下文章 告诉方法,但这两个都在视图中使用控制器名称,因此视图必须知道控制器,我正在寻找视图不必知道控制器的答案。 因为视图必须独立于控制器,所以视图不应该知道控制器C# 单击HTML按钮(而不是提交或表单的post按钮)Asp.net MVC调用控制器的特定操作,c#,asp.net,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,当我们单击表单的submit按钮时,会调用具有HTTPPost属性的控制器的操作,但如果我想在单击普通HTML按钮时调用或执行操作,该怎么办 尽管有以下文章 告诉方法,但这两个都在视图中使用控制器名称,因此视图必须知道控制器,我正在寻找视图不必知道控制器的答案。 因为视图必须独立于控制器,所以视图不应该知道控制器 因此,如果您知道答案,请回复任何将您的用户指向由创建的url的表单 <a href='@Url.Action("{action}", "{controller}")'>
因此,如果您知道答案,请回复任何将您的用户指向由创建的url的表单
<a href='@Url.Action("{action}", "{controller}")'> click me </a>
我会做你想做的
那可以用一个
- 形式
- 按钮链接
重要的是目的地。视图不“知道”有关操作或控制器的任何信息。帮助程序执行。要从客户端(即从视图)执行MVC操作,您需要点击URL(带有任何动词:get、post、put等)。 因此,要从视图执行操作,您需要知道该操作的URL,默认情况下该URL直接映射到
controllername/actionname
,但如果您希望在视图和控制器之间创建更多抽象,则可以重新定义此URL
考虑到这一点,您的按钮只需要是指向URL的链接或链接到js就可以执行Ajax http请求
希望有帮助 同一控制器上不能有两个具有相同名称和相同HTTP谓词的操作。所以你问的没有意义。您可以调用与呈现视图相同的控制器操作,而无需指定操作和控制器名称。
Html.BeginForm()
在不指定操作和控制器名称的情况下工作的原因是表单正在向服务器发送POST请求,您可以区分这两个操作
@using(BeginForm("{action}", "{controller}")