更新:一位同事告诉我,这是MVC4 beta中的一个已知错误。该问题是由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>
吗? 最佳答案
您是否有理由将JavaScript放在标题中?
我不是100%知道这里是什么问题,但这是最佳做法建议。我建议您将这个脚本放在视图/页面的底部。这是最佳做法。因此,在布局视图/母版页中,在关闭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>
}
我也有像您一样的meta标记,因为我的文档类型是HTML 4.01严格的。我从来没有这个问题。我只是将所有JavaScript放在页面底部。
关于jquery - <head>中的RenderSection缺少文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10100654/