MVC无法访问文件(由于路由?)

时间:2013-11-06 13:08:00

标签: c# asp.net-mvc-5 static-files

我在我的MVC应用程序文件夹Views/MemberField中放了一个Index.js和一个Index.css文件。 为这两个文件设置了Copy always

我尝试使用以下方式加载它们:

<link href="@Url.Content("~/Views/MemberField/Index.css")" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="@Url.Content("~/Views/MemberField/Index.js")">

给出以下html输出:

<link href="/Views/MemberField/Index.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/Views/MemberField/Index.js"></script>

到目前为止一切顺利。

但无法访问这两个文件。

The resource cannot be found.

我认为这是因为某些路由机制所以我篡改了我的RouteConfig.cs文件。

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.RouteExistingFiles = false;

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.IgnoreRoute("{file}.css");
        routes.IgnoreRoute("{file}.js");

        routes.MapRoute(
            name: "Default"
            , url: "{culture}/{controller}/{action}/{id}"
            , defaults: new { culture = UrlParameter.Optional, controller = "GlobalSettings", action = "Index", id = UrlParameter.Optional }
            , namespaces: new[] { "MygLogWeb" }
        );
    }
}

但它没有改变一件事。

怎么了?

1 个答案:

答案 0 :(得分:3)

好的,修好了。

我看错了路。
Visual Studio在Views文件夹中创建一个web.config文件,其中包含以下行:

<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />

我只需要改为

<add name="BlockViewHandler" path="*.cshtml" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />