.cshtml文件中的Jquery语法

时间:2012-01-11 08:44:04

标签: jquery razor

这是我的代码:

@{
ViewBag.Title = "My page";
Layout = "~/Views/Shared/_Layout.cshtml";
}

<script type="text/javascript">
$(document).ready(function () {
    $('#menucontainer').hide();
});
</script>

<h2>My page</h2>

@foreach (List<MyClass> item in (List<MyClass>[])ViewData["myList"])
{
foreach (MyClass item1 in item)
{
    if (item1.name.Equals("something"))
    {
        <script type="text/javascript">
            $(document).ready(function () {
                $('#idSomething').show();
            });
        </script>
        continue;
    }
}
break;
}

我在{中有一个断点。它被击中,然后进入continue;。脚本中的代码:$('#idSomething').show();永远不会被击中!这是为什么以及如何解决这个问题?

我也尝试过:

if (item1.name.Equals("something"))
    {
        @: ("#idSomething").show();
        continue;
    }

同样,show()调用断点未被命中。

4 个答案:

答案 0 :(得分:3)

我认为Razor不够聪明,不能单独处理这样的事情,尝试使用<text>标签,因此它知道它应该转储输出而不触及它:

@foreach (List<MyClass> item in (List<MyClass>[])ViewData["myList"])
{
    foreach (MyClass item1 in item)
    {
        if (item1.name.Equals("something"))
        {
            <text>
                <script type="text/javascript">
                    $(document).ready(function () {
                        $('#idSomething').show();
                    });
                </script>
            </text>
            continue;
         }
    }
    break;
}

答案 1 :(得分:1)

Javascript是客户端,因此无法逐步完成,因为C#代码可以在VS调试器中。

要逐步执行您的javascript代码,有几种工具,最着名的是Firebug for Firefox。如果您在javascript选项卡中查看代码,则可以像设置Visual Studio一样设置断点并逐步执行/上/下。

答案 2 :(得分:1)

如果您在Internet Explorer中运行,则JavaScript调试内置于Visual Studio中,但您必须在Internet Explorer看到的文档中设置断点。当您以调试模式启动项目时,您将在解决方案资源管理器中看到“脚本文档”部分。如果您在该部分下找到JavaScript代码,则应该能够设置断点。

enter image description here

答案 3 :(得分:0)

您正在混淆服务器端调试和客户端调试。

当您在C#代码中的{上设置断点时,您将在服务器端设置断点。解析页面时,将触发断点。

但此时,javascript未执行。它实际上甚至不是javascript,它只是被浏览器理解,并且将在浏览器中呈现页面时执行。要打破javascript代码,你必须在浏览器的javascript控制台中设置另一个断点。