2012-04-11 20 views
2

更新:一位同事告诉我,这是MVC4测试版中的一个已知错误。这个问题是由JavaScript的}括号造成的,导致RenderSection认为该部分已经结束。RenderSection <head >丢失文本

我在页面特定的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

关闭您的<meta>标签是否有你为什么想要把你的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都放在页面的底部。

+0

这就是我最终做的,它的工作原理。感谢最佳做法提示,我不知道它。 – 2012-04-12 03:12:17

3

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

尝试通过/>

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

你是查克诺里斯,真的!我确定你是...... D – 2012-04-11 06:02:34

相关问题