插入到_Layout.cshtml中时$(document).ready工作原理当插入到Index.cshtml中时不起作用

时间:2014-07-22 18:41:23

标签: javascript jquery asp.net-mvc

我知道如果它是一条蛇,它会让我咬伤。但我不明白为什么它在_Layout头文件中有效,但在我需要的特定索引页面中却没有。我无法在使用_Layout.cshtml的每个页面中看到此代码。

这是在_Layout中使用IF的jQuery代码。我将其剪切并粘贴到Index.cshtml中,它甚至不会发出警报。它应该做什么:如果其他输入发生变化(只能通过名称或ID搜索),它会清除输入。

这里没有表示javascript周围的标签。 我尝试了一个关闭所有其他代码的警报。 由于某种原因,javascript标签没有触发。

$(document).ready(function () {

    alert('doc ready in _layout just fired');

            $('#SearchString').on('input', function () {
                $('#SearchID').val('');
            });

            $('#SearchID').on('input', function () {
                $('#SearchString').val('');
            });
});

这在Index.cshtml中不起作用:

<script type="text/javacript">
alert('code in Index test');
</script>

======================================

所以,这只是在: 我将单页所需的jQuery代码放在“.js”文件中,除了代码之外什么也没有。 然后我在Index.cshtml的顶部引用了这个文件,它可以工作:

  <script src="@Url.Content("~/Scripts/search.js")" type="text/javascript"></script>

现在,这是一个很好的解决方法,为那些喜欢它的人提供了一定程度的分离,但我讨厌说这就是为什么Index.cshtml绕过javacript标签并使用jQuery代码的答案。所以我没有回答我的问题,只是这样说它可能会帮助其他几乎全部拔掉头发的人。 。 。

1 个答案:

答案 0 :(得分:3)

你在使用剃须刀引擎吗?这就是我通常拥有的......

在_layout.chstml

<head>
    @RenderSection("Head", false)
</head>

然后在你的视图中

@section Head {
    <script type="text/javascript">
        $(document).ready(function () {
            // your code goes here
        });
    </script>
}