簡體   English   中英

如何從按鈕單擊asp.net調用靜態方法

[英]How to call a static method from a button click asp.net

我有以下方法:

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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM