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