[英]JavaScript called in C# Razor
我試圖在我的 RazorModel 文件中調用一個 JS function 來提醒用戶他已成功登錄。
我嘗試過使用 TempDatas、ViewDatas、ModelStates 甚至 static 變量,但沒有成功。
經過一些搜索,我看到您可以通過 ScriptManager 調用 JS 代碼,但由於我正在運行 ASP.NET CORE 3.1,因此無法引用 System.Web.UI
這是我正在調用 POST 的方法。 我想在重定向到主頁之前顯示 alert() 。
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
returnUrl = returnUrl ?? Url.Content("~/");
if (ModelState.IsValid)
{
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, set lockoutOnFailure: true
var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: false);
if (result.Succeeded)
{
_logger.LogInformation("User logged in.");
return LocalRedirect(returnUrl);
}
if (result.RequiresTwoFactor)
{
return RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe });
}
if (result.IsLockedOut)
{
_logger.LogWarning("User account locked out.");
return RedirectToPage("./Lockout");
}
else
{
ModelState.AddModelError(string.Empty, "Invalid login attempt.");
return Page();
}
}
// If we got this far, something failed, redisplay form
return Page();
}
更新:使用基於 localStorage 的 javaScript 解決了我的問題,以保存變量,以便我可以跟蹤使用情況。
在我的 _LoginPartial
@if (SignInManager.IsSignedIn(User))
{
<script>
$(document).ready(function () {
var loginPrompt = localStorage.getItem("loginPrompt")
if (loginPrompt != 1) {
alert("Bine te-am gasit zeule! Hai si ia niste Doge.")
localStorage.setItem("loginPrompt", 1)
};
});
</script>
}
else
{
<script>
$(document).ready(function () {
localStorage.setItem("loginPrompt", 0);
});
</script>
}
當 Model 錯誤添加時,您可以使用此腳本調用警報:
在 Controller 中,modelError 已通過以下方式添加:
ModelState.AddModelError(string.Empty, "Invalid login attempt.");
然后查看以檢測並顯示警報:
<script>
@if (!ViewData.ModelState.IsValid)
{
<text>
$(document).ready(function() {
alert('@ViewData.ModelState[""].Errors.First().ErrorMessage');
});
</text>
}
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.