ASP.NET MVC中默认路由的Url.Content问题

时间:2010-01-22 12:47:59

标签: asp.net-mvc routes

如果我在默认视图/ Home / Index

中使用以下行
<script language="javascript" src="<%=Url.Content("~/Scripts/jquery-1.3.2.js")%>" type="text/javascript" ></script>

如果我使用以下网址浏览此位置 http ://127.0.0.1:9999 / Home / Index 页面正确呈现

<script language="javascript" src="/Scripts/jquery-1.3.2.js" type="text/javascript" ></script>

如果我使用以下网址 http ://127.0.0.1:9999 /(默认连接到Home / Index),页面会显示:

<script language="javascript" src="//Scripts/jquery-1.3.2.js" type="text/javascript" ></script>

有谁知道如何解决这个问题?

编辑:

仅供参考:我正在使用ASP.NET mvc 2 RC 这是我的路线配置:

routes.MapRoute(
 "Default",                                              // Route name
 "{controller}/{action}/{id}",                           // URL with parameters
 new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
);

4 个答案:

答案 0 :(得分:1)

如果您使用IIS6或WinXP Cassini,则应再注册一个路径:

if (Environment.OSVersion.Version.Major < 6) // IIS6 and WinXP Cassini
        {
            routes.MapRoute(
                "Root",
                "",
                new
                    {
                        controller = "Home",
                        action = "Index",
                        id = UrlParameter.Optional
                    }
                );
        }

答案 1 :(得分:0)

我使用Request.ApplicationPath ...与Asp.net有一个非常类似的问题,并将其包装如下

    public string AppRoot()
    {
        var appPath = Request.ApplicationPath;
        if (appPath.EndsWith("/"))
            return appPath;
        else
            return appPath + "/";

    }

答案 2 :(得分:0)

为什么要将id保持为空字符串?我认为这可能会导致问题。尝试以下操作可能会找到更好的结果:

routes.MapRoute(
 "Default",                                              // Route name
 "{controller}/{action}/{id}",                           // URL with parameters
 new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
);

到这个

routes.MapRoute(
 "Default",                                              // Route name
 "{controller}/{action}/{id}",                           // URL with parameters
 new { controller = "Home", action = "Index", UrlParameter.Optional }  // Parameter defaults
);

答案 3 :(得分:0)

嗯,或者您可以执行以下操作:

在web.config文件的appSettings部分创建一个键。

<add key="DomainName" value="http://http://127.0.0.1:9999/" />

现在,无论何时你想为任何图像分配“src”值,css文件的javascript,你都可以使用这个密钥。它将为您定义一个根,然后您可以定义放置文件的路径。即在你的情况下:

<script language="javascript" src="<%=System.Configuration.ConfigurationManager.AppSettings["DomainName"] %>Scripts/jquery-1.3.2.js" type="text/javascript" ></script>