我有一个ASP.NET MVC 3站点,我正在尝试启用客户端验证,但我遇到了一个非常奇怪的问题。页面加载和渲染就好了,直到我包含任何javascript文件。一旦我这样做,脚本标签下面的任何内容都会完全消失。例如,这渲染得很好(注意缺少javascript包括):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>@ViewBag.Title</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="/assets/css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="main">
@Html.Partial("Header")
<div class="clr"></div>
<div class="body_resize">
<div class="body">
<div class="left">
@RenderBody()
</div>
<div class="right">
@RenderSection("RightContent")
</div>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div>
@Html.Partial("BottomSection")
@Html.Partial("Footer")
</div>
</body>
</html>
然而,这会导致整个页面为空白(请注意在HEAD部分添加了jQuery链接标记):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>@ViewBag.Title</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="/assets/css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" />
</head>
<body>
<div class="main">
@Html.Partial("Header")
<div class="clr"></div>
<div class="body_resize">
<div class="body">
<div class="left">
@RenderBody()
</div>
<div class="right">
@RenderSection("RightContent")
</div>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div>
@Html.Partial("BottomSection")
@Html.Partial("Footer")
</div>
</body>
</html>
如果我将脚本链接标记移动到页面底部,它会再次呈现,但我很确定我无法访问jQuery库。我尝试在脚本include(现在位于页面底部)上面添加它:
<script language="javascript" type="text/javascript">
<!--
$(document).ready(function () {
alert('test');
});
//-->
</script>
我的警报从未被解雇。
另外,同样的事情发生在一个单独的部分视图中:
<div id="formContainer">
@using (Html.BeginForm())
{
<div class="tRightBoxMid tClear">
<p style="padding:0;">
Your Name @Html.ValidationMessageFor(m => m.Name)<br />
@Html.TextBoxFor(m => m.Name, new { style = "width:275px" })<br />
Your Email Address @Html.ValidationMessageFor(m => m.Email)<br />
@Html.TextBoxFor(m => m.Email, new { style = "width:275px" })<br />
Your Message @Html.ValidationMessageFor(m => m.Message)<br />
@Html.TextAreaFor(m => m.Message, 4, 100, new { style = "width:275px" })<br />
<input type="submit" class="formButton" value="Send Message" /><div id="msgSent" style="display:none;"><br /><br /><font color='green'><b>Message sent! A representative will be in touch with you shortly.</b></font></div>
</p>
</div>
}
</div>
<script type="text/javascript" src="/Assets/js/jquery.validate.min.js" />
<script type="text/javascript" src="/Assets/js/jquery.validate.unobtrusive.min.js" />
我的客户端验证永远不会解雇(请注意BOTTOM中的包含 - 页面渲染,但我无法访问包含的JS)。如果我将它移到顶部,我的页面的其余部分会加载,但这个局部视图会消失。
长话短说,任何存在的HTML,包含在我的网站中的任何地方似乎都在消失,当我将JS移到底部时,它就像它根本不包括在内。我已经尝试删除各个主体和其他部分的所有内容以消除它,但它似乎正在发生,即使几乎所有的标记和代码都被剥离出来......任何人都知道这里发生了什么?
答案 0 :(得分:3)
尝试像这样关闭脚本标签
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
然后尝试:
<script language="javascript" type="text/javascript">
$(document).ready(function () {
alert('test');
});
</script>
答案 1 :(得分:3)
也许试试
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" ></script>
代替?
编辑:dang,beaten。
答案 2 :(得分:2)
您必须关闭脚本标记
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
答案 3 :(得分:1)
这是因为你关闭标签的方式。试试这个:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" ></script>