【问题标题】:MVC button click to action [duplicate]MVC按钮点击操作[重复]
【发布时间】:2012-05-25 11:39:54
【问题描述】:

可能重复:
Mvc Html.ActionButton

有了ASP.NET MVC 3,我知道如何很容易地创建到动作方法的链接,但我想知道的是如何让按钮(单击时)调用特定的动作方法?

【问题讨论】:

    标签: asp.net-mvc-3 button actionmethod


    【解决方案1】:

    萨钦,

    如果您使用的是 jquery(您没有提及,但我会展示它,因为它与 mvc 相当标准),您将执行以下操作:

    $('#buttonId').click(function(){
       document.location = '@Url.Action("MyAction","MyController")';
    });
    

    当然,您可能想要使用 ajax,但这是一个基本示例。

    【讨论】:

      【解决方案2】:

      您可以使用 html <form>:

      @using (Html.BeginForm("SomeAction", "SomeController", FormMethod.Get))
      {
          <input type="submit" value="Click me" />
      }
      

      【讨论】:

      • 谢谢,它对我有用
      • 这对我有用:
      【解决方案3】:

      你是怎么做到的? 与不使用 MVC 的方式相同。

      <INPUT TYPE="BUTTON" VALUE="Home Page" ONCLICK="window.location.href='/Controller/Action'"> 
      

      【讨论】:

      • 最好不要使用内联 JavaScript。请参阅 Jim 或 CD Smith 的答案。
      【解决方案4】:

      除了 Darin 关于使用表单 GET 方法的回答外,您还可以调用 javascript 函数,然后依次调用操作。

      您可以在单击时拦截按钮单击事件并运行自己的代码。该代码可以使用 Ajax 异步调用操作,或者只是简单地导航到操作方法

      这里是拦截按钮点击事件的示例 javascript

      $(document).ready(function () {
      
          myButton.onclick = function (event) {
              // in here you can call an ajax method or just navigate to an action 
              return false;
          }
      
          // or using jQuery
          $('#myButton').click(function (e) {
              // do whatever here
              e.preventDefault;
          });
      });
      

      或者你可以拦截一个有 href 属性的按钮

      $(function () {
           $("#myButton").click(function () {
               var href = $(this).attr("href");
               var route = href + "?paramName=" + $('#SomeValue').val();
               $(this).attr("href", route);
           });
      });
      

      这会添加您可能已存储在页面上另一个输入中的参数信息,并将其附加到 Url,然后导航到操作

      【讨论】:

      • 既然 HTML 已经具备了所有必要条件,为什么还要使用 javascript?写语义标记总是比 javascript 好。
      • 是的,但是 OP 询问单击按钮以调用操作,该操作可能不一定是表单的发布,它可能只是用于导航或简单的 ajax 请求..
      • 谁说一个表单只能做POST?你可以很好地使用 GET 动词。
      • 是的,我使用了一个表单,因为我认为这是实现这一目标的语义正确方法。
      • 我明白了,只是提供了其他选择。还有很多其他理由可以调用不需要使用表单的操作。也许他在已经发布帖子的表单中有一个按钮,并且他希望该按钮调用一个动作,那么嵌套表单将不起作用。总有选择:-)
      猜你喜欢
      • 2019-01-02
      • 2016-03-14
      • 2013-01-16
      • 2019-10-25
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      相关资源
      最近更新 更多