在javascript中计算Razor变量
我需要在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
@{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代码段中的所有代码