簡體   English   中英

C# & ASP.NET MVC:使用 ajax 調用來調用視圖

[英]C# & ASP.NET MVC : call a view with ajax call

我想在當前視圖上調用 ajax 調用視圖。 以下是我的 Ajax 調用,它調用了我的 controller 的 function。

$.ajax({
        type: 'POST',
        url: '@Url.Action("EditCertificateObservation", "Frühwarnsystem")',
        data: {
            serverName: '@Model[0].ServerName',
            name: event.data.name,
            thumbprint: event.data.thumbprint,

            expiringDateStr: event.data.expiringDate,
            isChecked: document.getElementById(store + event.data.index).checked,
            model: data,
        },
    });

此代碼是我的 controller function ,它返回要加載的視圖。

[HttpPost]
public ActionResult EditCertificateObservation(string serverName, string name, string thumbprint, string expiringDateStr, bool isChecked, string model)
{
    var newModel = JsonConvert.DeserializeObject<List<Store>>(model);

    var cert = new Certificate(serverName, name, thumbprint, expiringDateStr);
    var server = new Server(serverName);
    server.FetchIdByServerName();

    if (isChecked)
    {
        cert.AddToObservation(server.Id);
    }
    else
    {
        cert.DeleteFromObservation();
    }

    return View("Index");
}

為您了解:我調用 ajax 調用時在我的視圖上帶有一個復選框,該復選框是動態生成的。 如果我調試 controller function 被調用並運行,但瀏覽器不會加載我返回的視圖。

如果您需要更多信息,請在此處詢問。

謝謝您的幫助

您正在調用 ajax POST HTTP 請求。 這意味着您可以下載調用結果並將其分配給 javascript 變量。 此結果不會作為頁面顯示在瀏覽器中。 此處查看$.post的示例。

如果您想在 Ajax 請求之后打開一個視圖,那么您只需等待 controller 的響應,那么您可以使用success ,但您也可以根據需要使用failureerror ,所以您的 Z3EB7106C3477A59CDE1 會像這樣:

$.ajax({
    type: 'POST',
    url: '@Url.Action("EditCertificateObservation", "Frühwarnsystem")',
    data: {
        serverName: '@Model[0].ServerName',
        name: event.data.name,
        thumbprint: event.data.thumbprint,

        expiringDateStr: event.data.expiringDate,
        isChecked: document.getElementById(store + event.data.index).checked,
        model: data,
    },
        success: function (response) { 
        alert(response.message); 
        window.location.href = "/Frühwarnsystem/Index";

        // or with some parameter
        window.location.href ="/Frühwarnsystem/Index?id=" + response.counter;

        // or if you prefer with helper ...
        window.location.href = '@Url.Action("Frühwarnsystem","Index")';
        
        },
        failure: function (response) { alert("failure"); },
        error: function (response) { alert("error"); }
});

為了更有用一點,您的 controller 可以發送帶有一些參數的Json 響應,例如,如下所示:

[HttpPost]
public JsonResult EditCertificateObservation(string serverName, string name, string thumbprint, string expiringDateStr, bool isChecked, string model)
{
    var newModel = JsonConvert.DeserializeObject<List<Store>>(model);

    var cert = new Certificate(serverName, name, thumbprint, expiringDateStr);
    var server = new Server(serverName);
    server.FetchIdByServerName();

    if (isChecked)
    {
        cert.AddToObservation(server.Id);
    }
    else
    {
        cert.DeleteFromObservation();
    }
    // Do some condition here to send an answer ...
    string message = "";
    int counter = 0;
    var response = new { counter, message };
    return Json(response);
}

暫無
暫無

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

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