我在使用jQuery插件在MVC视图中正常工作时遇到了一些麻烦。这就是目前的样子:(我已将所有需要的jQuery包含和css文件复制到网站的/ Scripts文件夹中)
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script src="/Scripts/jquery-1.3.2.js" type="text/javascript"></script>
<script src="/Scripts/jquery.MetaData.js" type="text/javascript"></script>
<script src="/Scripts/jquery.rating.js" type="text/javascript"></script>
<link href="/Scripts/jquery.rating.css" rel="stylesheet" type="text/css" />
<input name="rating" type="radio" class="star" value="1"/>
<input name="rating" type="radio" class="star" value="2"/>
<input name="rating" type="radio" class="star" value="3"/>
<input name="rating" type="radio" class="star" value="4"/>
<input name="rating" type="radio" class="star" value="5"/>
</asp:Content>
intellisense正在嘎嘎叫上面的链接元素不能嵌套在div标签中(div是什么?)也不能智能感知任何输入标签中的“star”类。
当我导航到相关页面时,我看不到星星,只看到单选按钮列表。好像jQuery的东西没有运行。
我应该将脚本和链接标记放在MVC视图中?有人可以提供小样本吗?
我正在从Wrox的“Professional ASP.Net MVC”中查看这个例子,并且Ajax章节留下了一些需要的东西,因为代码都是没有完整页面的代码片段。本书的Wrox网站章节代码也包含相同的片段,每个文本文件一个,并且没有用。
谢谢!
答案 0 :(得分:2)
在主页文件中,在头部区域中创建内容占位符。您可以在需要将脚本和样式插入特定视图时使用它,这意味着您不会偏离指示此类文件应该出现的指导原则。
在您的Site.Master文件中:
<head>
<!-- head stuff here -->
<asp:ContentPlaceHolder ID="HeadContent" runat="server" />
</head>
在您的视图中使用aspx文件:
<asp:Content ContentPlaceHolderID="HeadContent" runat="server">
<script src="/Scripts/jquery-1.3.2.js" type="text/javascript"></script>
<script src="/Scripts/jquery.MetaData.js" type="text/javascript"></script>
<script src="/Scripts/jquery.rating.js" type="text/javascript"></script>
<link href="/Scripts/jquery.rating.css" rel="stylesheet" type="text/css" />
</asp:ContentPlaceHolder>
<asp:Content ContentPlaceHolderID="MainContent" runat="server">
<input name="rating" type="radio" class="star" value="1"/>
<input name="rating" type="radio" class="star" value="2"/>
<input name="rating" type="radio" class="star" value="3"/>
<input name="rating" type="radio" class="star" value="4"/>
<input name="rating" type="radio" class="star" value="5"/>
</asp:Content>
答案 1 :(得分:1)
您需要将<link />
放在<head>...</head>
部分,脚本标记应该没问题。你可以将它放在母版页的头部。
答案 2 :(得分:1)
使用Helper方法获取脚本和css文件的正确位置也是一种有用的练习。
<script src="<%= Html.Content("~/Scripts/jquery-1.3.2.js") %>
type="text/javascript"></script>
答案 3 :(得分:1)
请检查fiddler并查看当您调用特定文件时获取的wat类型的响应....如果脚本正确呈现并且针对该特定页面...如果没有则请发布响应和副本..
当我在mvc中使用js时遇到了类似的问题我无法加载j查询...所以为此我创建了一个帮助类,它为我返回绝对路径
public static string ResolveUrl(this HtmlHelper html, string virtualUrl)
{
Control con = new Control();
var RelativeUrl = con.ResolveUrl(virtualUrl);
if (!virtualUrl.StartsWith("~/"))
return RelativeUrl;
virtualUrl = virtualUrl.Remove(0, 2);
string applicationPath = html.ViewContext.HttpContext.Request.ApplicationPath;
if (string.IsNullOrEmpty(applicationPath) || !applicationPath.EndsWith("/"))
{
applicationPath = applicationPath + "/";
}
return applicationPath + virtualUrl;
}
}
在我看来,我这样称呼这个页面......
<script src="<%= Html.ResolveUrl("~") %>Scripts/jquery-1.3.2.js" type="text/javascript"></script>
答案 4 :(得分:0)
您是否在使用网站的母版页?如果是这样,您可以将所有include标记放在母版页中,那么使用母版页的所有视图都可以使用它。