BundleConfig.cs MVC 4中缺少资源

时间:2014-01-02 22:52:29

标签: c# asp.net-mvc bundle

我希望有人能抓到我错过的东西。我将我的javascript文件捆绑在BundleConfig.cs中,它位于App_Data这样的文件夹中

bundles.Add(new ScriptBundle("~/bundles/customScript").Include(                   
                    "~/Views/Summary/storedata.js",                      
                    "~/Views/Summary/UploadData.js",
                    "~/Views/Summary/manipulateData.js"));

当我加载页面时,它说无法找到资源。我仔细检查,路径是正确的。似乎无法加载View中的资源。我有一些来自Scripts文件夹中的库的脚本,可以加载

bundles.Add(new ScriptBundle("~/bundles/frameworkScripts").Include(
                    ...
                    "~/Scripts/jquery.browser.min.js",
                    "~/Scripts/jquery.inputmask.bundle.js",
                    ....

有什么我忘记检查的吗?也许帮助我指出正确的方向?

更新

根据要求我在我的_Layout.cshtml中加载了这个包,它位于共享文件夹中,该文件夹位于Views文件夹中

<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />

<!-- Meta tag used for the finger gesture needed for swiping -->
<meta name="viewport" content="minimum-scale=1.0, maximum-scale=1.0, width=device-width, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />

<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />   
  @Styles.Render("~/Content/css")
  @Styles.Render("~/Content/themes/base/css")
  ....
  @Scripts.Render("~/bundles/frameworkScripts")
  ....
  @Scripts.Render("~/bundles/customScript")

我得到的错误是在Web控制台中,这只是错误之一,另一个是相同的错误差异。资源

Failed to load resource: the server responded with a status of 404 (Not Found) 
http://localhost:53228/Views/Summary/manipulateData.js

2 个答案:

答案 0 :(得分:0)

在标准的ASP.Net MVC项目中,有2个Web.config文件(一个在根目录中,一个在Views Diectory中)。在第二个Web.config中,您将找到以下内容:

<httpHandlers>
      <add path="*" verb="*"
          type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>

这会阻止服务器直接从Views文件夹或子文件夹中提供任何文件。您可以使用以下代码替换它并仍然是安全的:

<httpHandlers>
    <add path="*.aspx" verb="*"
        type="System.Web.HttpNotFoundHandler"/>
    <add path="*.master" verb="*"
        type="System.Web.HttpNotFoundHandler"/>
    <add path="*.ascx" verb="*"
        type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>

答案 1 :(得分:0)

这与ASP.NET MVC中无法通过URL访问Views目录这一事实有关。因此,您必须通过控制器才能进入视图。这就是路由的工作原理。

出于这个原因,有一个Scripts目录(和Content目录用于css,图像等)。如果每个视图有许多脚本,请为Scripts下的每个视图创建一个目录。