在javascript中计算Razor变量

在javascript中计算Razor变量,javascript,asp.net-mvc,razor,Javascript,Asp.net Mvc,Razor,我需要在javascript函数中计算razor变量。给定以下代码: @{var unseenNotificationsExist = false;} @foreach(var notification in viewModel) { if (notification.WasSeen == false) { unseenNotificationsExist = true; break; } } 我需要评估javascript中的unse

我需要在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)
而且我还得到一个未捕获的引用错误True未定义

尝试使用

if('@unseenNotificationsExist')
您尝试了:

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

如果您不想呈现JavaScript,请使用Daniele的建议

如果您坚持使用JavaScript进行比较:

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

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

var True = true

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

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

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

var accountDto = @Html.Raw(Json.Encode(@Model.AccountDto))
var isTrue = @Json.Encode(Model.IsTrue)
用于转换模型的(bool)属性

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

它仍然是真的,而不是真的是的,我做了,同样的结果。在
if
之前,它只是缺少了一个
@
,在我看来,可能还缺少一个大括号,使它成为一个C#if。if在javascript中不是razohough,虽然这可能会起作用,但将变量转换为javascript并自己操作它将是一个很好的实践。仅仅依靠ToString()将不是一个好的选择,因此这种类型的模式不允许用户在单独的文件中分离所有js代码。这不是一个漂亮的解决方案,同意!但是您的解决方案也不允许单独的JS文件…;-)编辑:事实上,我收回这句话——你肯定只提到了
if
部分。为什么不。。我只是做一个全局变量。。我已经编辑了我的ans,请再次检查是的,我现在看到了,我发布时它不在那里,但我最终发现了。我的答案不完整,我编辑了它。这似乎对我有效。这将始终进入true块,因为在js dosent matter中,您将检查(“true”)或(“False”)是否正确。但是,您不能用false初始化变量,只需声明它即可。它还可以在视图中包含javascript代码段中的所有代码