Синтаксис Jquery в файле .cshtml - PullRequest
2 голосов
/ 11 января 2012

Вот мой код:

@{
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 ]

3 голосов
/ 11 января 2012

Я не думаю, что 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 голос
/ 11 января 2012

Если вы работаете в Internet Explorer, отладка JavaScript встроена в Visual Studio, но вы должны установить точку останова в документе, который видит Internet Explorer. Когда вы запустили проект в режиме отладки, вы увидите раздел «Документы сценария» в обозревателе решений. Если вы найдете свой код JavaScript в этом разделе, вы сможете установить точку останова.

enter image description here

1 голос
/ 11 января 2012

Javascript - это клиентская часть, поэтому его невозможно пройти, так как код C # может присутствовать в отладчике VS.

Чтобы пройти через ваш код JavaScript, есть несколько инструментов, особенно Firebug для Firefox. Если вы просматриваете свой код на вкладке javascript, вы можете установить точки останова и переходить через / поверх / к ним, как в Visual Studio.

0 голосов
/ 11 января 2012

Вы путаете отладку на стороне сервера и отладку на стороне клиента.

Когда вы устанавливаете точку останова на { в коде C #, вы устанавливаете точку останова на стороне сервера. Когда страница будет проанализирована, будет достигнута точка останова.

Но на этом этапе JavaScript не выполняется. На самом деле он даже не известен как javascript, он просто понимается браузером и будет выполняться, когда страница отображается в браузере. Чтобы взломать код JavaScript, вам нужно установить другую точку останова в консоли JavaScript браузера.

...