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