无法从Razor调用Javascript方法';如果';陈述
问题背景: 我试图在呈现视图时检查用户是否登录到我的站点 问题: 目前,我将用户用户名设置为控制器中的ViewBag属性,然后在其各自的视图中访问该属性。我面临的问题是,Razor语法中的IF语句似乎没有检查ViewBag.userName属性,而不是调用JavaScript方法来设置按钮的内部HTML和用户名 作为补充说明,作为测试,我将ViewBag属性设置为h3标记,以确保用户名被传递到它所在的视图 代码: 设置用户名的我的控制器:无法从Razor调用Javascript方法';如果';陈述,javascript,c#,asp.net-mvc,asp.net-mvc-4,razor,Javascript,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,问题背景: 我试图在呈现视图时检查用户是否登录到我的站点 问题: 目前,我将用户用户名设置为控制器中的ViewBag属性,然后在其各自的视图中访问该属性。我面临的问题是,Razor语法中的IF语句似乎没有检查ViewBag.userName属性,而不是调用JavaScript方法来设置按钮的内部HTML和用户名 作为补充说明,作为测试,我将ViewBag属性设置为h3标记,以确保用户名被传递到它所在的视图 代码: 设置用户名的我的控制器: ViewBag.userName = Session["
ViewBag.userName = Session["userName"];
观点:
检查ViewBag属性用户名的状态,如果它不为null,即用户已登录,则调用ShowUsersName方法将值设置为HTML
@if (ViewBag.userName != null)
{
<script>
var userName= @ViewBag.userName;
ShowUsersName(userName);
</script>
}
@if(ViewBag.userName!=null)
{
var userName=@ViewBag.userName;
ShowUsersName(用户名);
}
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>
var ShowUsersName=函数(用户名){
var html='Hi',+userName+'”;
document.getElementById(“userButton”).innerHTML=html;
};
我不认为简单地在if语句中放置一个script标记会导致javascript运行。您需要在加载正文(或其他事件)时将其绑定到
可以做的一件事是在if语句中创建一个具有username值的隐藏元素或输入:
<div id='user-name' style='display:none;'>
@if (ViewBag.userName != null)
{
@ViewBag.userName
}
</div>
这只是一个简单的示例,您可以找到另一种方法来执行此操作请确保您的viewbag不为空。您还可以尝试删除if语句以查看它是否呈现脚本。 要测试viewbag的内容,可以执行以下操作:
<h1>@ViewBag.userName</h1>
@ViewBag.userName
为了确保只需检查页面的视图源代码,如果在if块中找到语句,那么它就会正确运行,现在问题出在JS函数中。您的代码片段是否完整?ShowUsersName中是否有结束脚本标记?另外,我会在var userName=”中用双引号括起“@ViewBag.userName”@ViewBag.userName“也应该是ShowUsersName(用户名)?回答很好。我使用JQuery并使用了隐藏的div方法。它工作得很好。出于兴趣,当我刷新页面时,更改的html丢失了,我如何在刷新后保留它?当你刷新页面时,你在控制器中点击了一个动作方法。再次在viewbag中发送用户名。希望这能有所帮助
<div id='user-name' style='display:none;'>
@if (ViewBag.userName != null)
{
@ViewBag.userName
}
</div>
$(document).ready(function() {
var userName = '';
userName = $('#user-name').text();
if (userName != '') {
//your code if userName is not empty
}
});
<h1>@ViewBag.userName</h1>