缺少文本的RenderSection

时间:2012-04-11 05:58:55

标签: jquery razor asp.net-mvc-4

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

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

我在_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>

2 个答案:

答案 0 :(得分:3)

可能的原因可能是您的<meta>标记没有正确关闭,这会在IE中产生这样的结果。

尝试按<meta>

关闭/>代码
<meta name="viewport" content="width=device-width" />

答案 1 :(得分: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>
}

我也有像你这样的meta标签,因为我的doc类型是HTML 4.01严格的。我从未遇到过这个问题。我只是将我的所有JavaScript放在页面底部。