Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据razor C#列表计数在jQuery中分配css类_Jquery_Css_Asp.net Mvc_Razor - Fatal编程技术网

根据razor C#列表计数在jQuery中分配css类

根据razor C#列表计数在jQuery中分配css类,jquery,css,asp.net-mvc,razor,Jquery,Css,Asp.net Mvc,Razor,我有一个css通知菜单。这一切都在一个分区中。在这个分区中,我有一个链接,当鼠标悬停时,它会以菜单式的方式显示通知 如果有通知,我想更改div的背景色,如果链接被悬停,我想删除背景色。我想使用名为“templates”的C#razor变量的count属性,该变量存储要在菜单中显示的通知的模板 我想在javascript/jquery中执行类似的操作 $(document).ready(function()) { if(@templates.Count > 0) { $('#

我有一个css通知菜单。这一切都在一个分区中。在这个分区中,我有一个链接,当鼠标悬停时,它会以菜单式的方式显示通知

如果有通知,我想更改div的背景色,如果链接被悬停,我想删除背景色。我想使用名为“templates”的C#razor变量的count属性,该变量存储要在菜单中显示的通知的模板

我想在javascript/jquery中执行类似的操作

$(document).ready(function())
{
  if(@templates.Count > 0)
  {
    $('#notificationsMenuItem').addClass('notifNotSeen');
  }
}

 function changeBackground() {
    var menu = $('#notificationsMenuItem');

    if(menu.hasClass('notifNotSeen'))
        menu.removeClass('notifNotSeen');
}
以下是包含菜单结构的div:

<div id="notificationsMenuItem" class="divList">
   <a href="#" style="font-weight: normal; padding: 0;"   onmousedown="changeBackground()">Notifications</a>
........


 </div>

........

这可能吗?还有什么其他方法可以做到这一点

您可以添加带有计数的隐藏输入字段:

@Html.Hidden("templatesCount", @templates.Count, new {@id="templatesCount"})
并读取jQuery中的值:

$('#templatesCount').val();

通过这种方式,您可以将js作为一个单独的文件使用。

应该与您在那里编写它的方式差不多。它将输出“动态”javascript,如果在文件中查看,当然会显得有点愚蠢,因为在那里它显示为硬编码的值,例如,
if(5>0){…}
-但它仍然可以工作。@UweB,我的问题是它不能正常工作,我不能将C#服务器端变量的值赋给jQuery javascript函数。好吧,@templates到底是什么?因为如果这是cshtml页面中的一个C#变量,那应该没问题,因为@templates.Count将由服务器计算并简单地写入结果HTML页面/JavaScript函数,而不是将其传递给函数,或者用不同的措辞:服务器的输出将改变JavaScript函数的主体,而不是将值传递给静态函数。它是一个C#变量(字符串列表),但在javascript中尝试执行此操作时,我遇到了一个“语法错误”:if(@templates.Count>0),但现在它工作了。这是客户端的语法错误,还是razor视图崩溃了?只有在cshtml中实际声明并分配了@template时,才可以使用@template.Count。如果视图执行正常,但出现JavaScript错误,请检查页面上的JavaScript。如果您在HTML页面中实际看到
@template.Count
,则在服务器端它不会被识别为变量。应该在那里对其进行求值,并用实际值替换,以便在完全呈现的页面中看到类似于
if(5>0)
的内容。不幸的是,这不起作用。我想这是因为我没有发表文章,所以隐藏字段的值似乎没有设置。我也不能使用ChromeDevTools来调试javascript,因为我使用的是这个菜单的部分视图。