簡體   English   中英

JavaScript 在 C# Razor 中調用

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

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