簡體   English   中英

無法從Razor'IF'語句調用Javascript方法

[英]Unable to call a Javascript method from a Razor 'IF' statement

問題背景:

我打算檢查呈現視圖時用戶是否登錄到我的網站。

問題:

目前,我將用戶名設置為Controller中的ViewBag屬性,然后在其各自的View中訪問它。 我面臨的問題是我的Razor語法中的IF語句似乎並沒有檢查ViewBag.userName屬性,然后依次沒有調用JavaScript方法來使用用戶名設置按鈕的內部HTML。

附帶說明一下,作為測試,我將ViewBag屬性設置為h3標簽,只是為了確保將用戶名傳遞給它所在的視圖。

編碼:

設置用戶名的控制器:

ViewBag.userName = Session["userName"];

風景:

檢查ViewBag屬性userName的狀態,如果不為null(即用戶已登錄),則調用ShowUsersName方法以將值設置為按鈕內部HTML。

@if (ViewBag.userName != null)
{
    <script>
       var userName= @ViewBag.userName;

        ShowUsersName(userName);
    </script>
}

ShowUsersName方法:

<script type="text/javascript">

var ShowUsersName = function (userName) {

    var html = '<span class="glyphicon glyphicon-user"></span> Hi, '+ userName +'"<strong class="caret glyphicon glyphicon-triangle-bottom"></strong>';

    document.getElementById("userButton").innerHTML = html;

};
</script>

我不認為簡單地將腳本標記放在if語句內會導致javascript運行。 您需要將此綁定到身體負荷(或其他事件)上

<body onload='jsFunction()'>

如果您使用的是jQuery,則可以使用以下腳本部分:

$(document).ready(function() {  
   //your code
});

您可以做的一件事是在if語句中創建一個具有用戶名值的隱藏元素或輸入:

<div id='user-name' style='display:none;'>
@if (ViewBag.userName != null)
{
    @ViewBag.userName
}
</div>

並在您的jQuery中(如果您使用的是jQuery):

$(document).ready(function() {  
   var userName = '';
   userName = $('#user-name').text();
   if (userName != '') {
    //your code if userName is not empty
   }
});

這些東西。 這只是一個簡單的示例,您可能會找到一種替代方法

確保您的視圖包不為空。 您也可以嘗試刪除if語句以查看其是否呈現腳本。 要測試視圖包的內容,您可以執行以下操作:

<h1>@ViewBag.userName</h1> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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