如何从按钮调用静态方法

本文关键字:调用 静态方法 按钮 | 更新日期: 2023-09-27 18:11:07

我有一个方法如下:

public static void UpdateAll()
    {
       // Updates database
    }

和我有一个MVC应用程序,视图如下(删除行清晰):

<button id ="btn">Update</button>
//...
<script>
    $('#btn').click(function () {
        @{
           project.models.settings.UpdateAll();
         }
    });
</script>

project.models.settings.UpdateAll()方法在页面加载时立即触发。是否有一种方法,使这个方法加载,只有一次用户已经点击了按钮?

为了测试,我确实用一个简单的console.log替换了这个方法,并且它按预期工作。

任何指示,示例都非常感谢。

亲切的问候

如何从按钮调用静态方法

我认为你对web应用程序的工作原理缺乏基本的理解。

当你把下面的代码放入你的视图中时,你是在声明一段服务器端代码,当视图在服务器端被处理时,它将被执行。

@{
    project.models.settings.UpdateAll();
}

当你用console.log替换它时,它工作的原因是console.log是客户端代码,它在客户端(即在浏览器中)执行。

从客户端代码(您的按钮单击事件处理程序)调用服务器端代码(您的UpdateAll方法)的唯一方法是通过AJAX调用。

最简单的事情是首先将UpdateAll方法作为控制器动作公开。一般来说,对于响应AJAX调用的操作,我喜欢创建一个单独的控制器,但这不是绝对必要的。

public ServiceController : Controller
{
    public ActionResult UpdateAll()
    {
    }
}

现在从您的客户端代码对该操作进行AJAX调用。

你这样做是行不通的。

该方法将在视图加载时调用,因为它是服务器端代码,它将在视图渲染时执行。

使用ajax调用一个动作,在这个动作中调用这个方法:

$('#btn').click(function () {
         $.ajax({
                  type: "GET",
                  url: '@Url.Action("MyAction","My")',
                  success: function(data) {
                   },
                   error: function(result) {
                    alert("Error");
                    }
         });
    });

在控制器中写一个动作:

public void MyAction()
{
project.models.settings.UpdateAll();
}