[英]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 請求,則需要將處理程序方法命名為OnPostFoo
或OnPostFooAsync
,其余每個 HttpVerbs 都類似
如果你想發出 POST 請求,你必須做更多的提升。 在這里閱讀它: https://www.thereformedprogrammer.net/asp-net-core-razor-pages-how-to-implement-ajax-requests/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.