更新:,一位同事告诉我,这是MVC4测试版中的一个已知错误。该问题是由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>
发布于 2012-04-11 08:29:33
你为什么要把你的JavaScript放在标题中?
我不能百分之百确定这里的问题是什么,但这里有一个最佳实践建议。我将建议您将此脚本放在视图/页面的底部。这是最好的做法。因此,在布局视图/母版页中,在关闭body标记之前,请执行以下操作:
<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>
}我也有像您一样的元标记,因为我的doc类型是HTML4.01严格的。我从没出过这个问题。我只是把我所有的JavaScript放在页面的底部。
发布于 2012-04-11 06:01:54
可能的原因可能是您的<meta>标签没有正确关闭,这在IE中带来了这样的结果。
尝试通过<meta>关闭/>标记
<meta name="viewport" content="width=device-width" />https://stackoverflow.com/questions/10100654
复制相似问题