在javascript中评估Razor变量

时间:2013-08-08 08:41:24

标签: javascript asp.net-mvc razor

我需要在javascript函数中评估一个razor变量。给出以下代码:

 @{var unseenNotificationsExist = false;}

 @foreach(var notification in viewModel)
 {
    if (notification.WasSeen == false)
    {
      unseenNotificationsExist = true;
      break;
    }
 }

我需要在javascript中评估unseenNotificationsExist变量,如下所示:

 if(@unseenNotificationsExist == true)
        $('#unseenNotifCount').addClass('notifNotSeen');

然而,当我调试javascript代码时,我得到了这个:

if(True == true)

并且我得到一个Uncaught ReferenceError True未定义

6 个答案:

答案 0 :(得分:4)

var unseenNotificationsExist = @(unseenNotificationsExist?"true":"false") ;
//the line above must be part of your view

if( unseenNotificationsExist == true)
        $('#unseenNotifCount').addClass('notifNotSeen');
//this can be part of your js file or alternatively and less 
//preferably part of your view

答案 1 :(得分:3)

我找到了一个解决方法:我添加了这个

var True = true

现在,在javascript中定义了一个变量“True”,评估结果为True == true,返回true。

答案 2 :(得分:1)

每当我想将模型数据转换为JSON对象或JSON变量时,我更喜欢使用 Json.Encode

用于将模型的对象(dto)转换为javascript

var accountDto = @Html.Raw(Json.Encode(@Model.AccountDto))

用于转换模型

的(bool)属性
var isTrue = @Json.Encode(Model.IsTrue)

答案 3 :(得分:0)

如果您不想渲染JavaScript,请使用Daniele的建议。

如果您坚持在JavaScript中进行比较:

if(@unseenNotificationsExist.ToString().ToLower() === true)

答案 4 :(得分:-1)

尝试使用

if('@unseenNotificationsExist')

答案 5 :(得分:-1)

您尝试过:

if('@unseenNotificationsExist' === 'True')
        $('#unseenNotifCount').addClass('notifNotSeen');