在 C# Razor 中调用的 JavaScript
Posted
技术标签:
【中文标题】在 C# Razor 中调用的 JavaScript【英文标题】:JavaScript called in C# Razor 【发布时间】:2021-07-29 04:03:08 【问题描述】:我正在尝试在我的 RazorModel 文件中调用一个 JS 函数,以提醒用户他已成功登录。
我尝试过使用 TempDatas、ViewDatas、ModelStates 甚至静态变量,但没有成功。
经过一些搜索,我发现你可以通过 ScriptManager 调用 JS 代码,但我无法引用 System.Web.UI,因为我正在运行 ASP.NET CORE 3.1
这是我调用 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>
【问题讨论】:
请不要用您的答案更新问题。相反,您应该在下面添加自己的答案,解释它的工作原理以及它如何解决您的问题。您还应该在可能的情况下接受它作为 答案。 【参考方案1】:当模型错误添加时,您可以使用此脚本来调用警报:
在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>
【讨论】:
这不符合我的标准。我使用在动态变量上运行的基于 localStorage 的 javaScript 解决了我的问题。无论如何,谢谢你的帮助。以上是关于在 C# Razor 中调用的 JavaScript的主要内容,如果未能解决你的问题,请参考以下文章