2

更新:一位同事告诉我这是 MVC4 beta 中的一个已知错误。该问题是由 javascript 中的 } 括号引起的,导致 RenderSection 认为该部分已结束。

我的页面特定 jquery 的布局中有一个渲染部分。它没有正确地将代码从我的视图复制到渲染部分。

我的 _Layout.cshtml 中有以下内容(模板 _Layout.cshtml + 我的新部分)

<script src="@Url.Content("~/Scripts/AjaxLogin.js")" type="text/javascript"></script>
        @RenderSection("jqueryheader", false)

        <meta name="viewport" content="width=device-width">
    </head>

我的 Index.cshtml 中有以下代码

@section jqueryheader {
<script type="text/javascript">
    $(document).ready(function () {
        var listid = '@(Model.ID)';
        $("#additem").load("~/Item/AddItem/" + listid);
    });
</script>
}

我在 IE 中得到以下输出:

<script src="/Scripts/AjaxLogin.js" type="text/javascript"></script>

<script type="text/javascript">
    $(document).ready(function () {
        var listid = '9f3348ef-f713-48c6-a267-3777182cf39e';
        $("#additem").load("~/Item/AddItem/" + listid);


        <meta name="viewport" content="width=device-width">
    </head>

任何人都知道为什么 RenderSection 错过了});</script>

4

2 回答 2

3

可能的原因可能是您的<meta>标签未正确关闭,从而导致 IE 出现此类结果。

尝试关闭您的<meta>标签/>

<meta name="viewport" content="width=device-width" />
于 2012-04-11T06:01:54.777 回答
2

您是否有理由将 JavaScript 放在标头中?

我不是 100% 确定这里的问题是什么,但这里有一个最佳实践建议。我建议您将此脚本放在视图/页面的底部。这是最佳实践。因此,在您的布局视图/母版页中,就在您关闭正文标记之前,请执行以下操作:

<body>

     <!-- Other HTML code -->

     <script src="@Url.Content("~/Assets/JavaScripts/jquery-1.7.2.min.js")"></script>
     @RenderSection("JavaScriptBodySection", false)

</body>

然后在您看来,您只需这样做:

@section JavaScriptBodySection
{
     <script>

          $(document).ready(function () {
               var listid = '@(Model.ID)';
               $("#additem").load("~/Item/AddItem/" + listid);
          });

     </script>
}

我也有像你一样的元标记,因为我的文档类型是 HTML 4.01 严格的。我从来没有遇到过这个问题。我只是将我所有的 JavaScript 放在页面底部。

于 2012-04-11T08:29:33.770 回答