[英]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.