簡體   English   中英

從 ASP.NET 內核查看代碼獲取 JSON

[英]Get a JSON from an ASP.NET Core view code

在 ASP.NET Core 2.2 應用程序中,我有一個用戶頁面,我需要在該頁面上獲取密碼重置鏈接

貝婁是我的代碼,這似乎不起作用在此處輸入圖像描述

EditUser.cshtml代碼

<script>
    var getUserLink = function () {
        var actionLink = "@Url.Action("ResetPassword", user)";
        $.getJSON(actionLink, function (data) {
            $("#resetLink").html(data["resetLink"]);
        });
    };
</script>

EditUser.chtml.cs代碼

public class EditUserModel : PageModel
{
   /// ...

    public async Task<JsonResult> ResetPassword(ApplicationUserModel user)
    {
        var appUser = new ApplicationUser
        {
            UserName = user.Email,
            Email = user.Email,
            DisplayName = user.Name,
            OrganizationID = user.OrganizationID,
            EmailConfirmed = true
        };
        var code = await userManager.GeneratePasswordResetTokenAsync(appUser);
        var callbackUrl = Url.Page("/Account/ResetPassword",
            pageHandler: null,
            values: new { code },
            protocol: Request.Scheme);
        return new JsonResult(new { resetLink = callbackUrl });
    }
}

我的意思是,當我從cshtml頁面單擊“獲取”按鈕時,會詢問 JSON,但代碼沒有在cshtml.cs文件中輸入ResetPasword function。 問題出在哪里?

在 razor 頁面上,您使用“處理程序”來調用對您當前所在的 razor 頁面的請求。

因此,如果您想發出 get 請求,您必須重命名您的方法以遵循特定模式:

public class EditUserModel : PageModel
{
    public async Task<JsonResult> OnGetResetPasswordAsync(ApplicationUserModel user)
    {
        /* ...*/
    }
}

您的 javascript 現在變為以下內容:

var getUserLink = function () {
    var actionLink = "./?handler=ResetPassword";
    $.getJSON(actionLink, function (data) {
        $("#resetLink").html(data["resetLink"]);
    });
};

與此類似:如果要發出 POST 請求,則需要將處理程序方法命名為OnPostFooOnPostFooAsync ,其余每個 HttpVerbs 都類似

如果你想發出 POST 請求,你必須做更多的提升。 在這里閱讀它: https://www.thereformedprogrammer.net/asp-net-core-razor-pages-how-to-implement-ajax-requests/

暫無
暫無

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

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