在ASP.Net MVC中使用javascript和css文件查看?

时间:2009-09-17 07:28:18

标签: javascript jquery asp.net-mvc

我在使用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网站章节代码也包含相同的片段,每个文本文件一个,并且没有用。

谢谢!

5 个答案:

答案 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标记放在母版页中,那么使用母版页的所有视图都可以使用它。