【问题标题】:Problem with Url.Content in ASP.NET MVC on Default Route默认路由上 ASP.NET MVC 中的 Url.Content 问题
【发布时间】:2010-01-22 12:47:58
【问题描述】:

如果我在默认视图 /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
);

【问题讨论】:

  • 抱歉,我无法重现此行为。您能否发布您的 RegisterRoutes() 过程的内容以及您使用的 asp.net mvc 版本?
  • 正如 Marc 所说,这不应该发生。我也无法重现。

标签: asp.net-mvc routes


【解决方案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
                    }
                );
        }

【讨论】:

    【解决方案2】:

    我在使用 Request.ApplicationPath 时遇到了与 Asp.net 非常相似的问题...并将其包装如下

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

    【讨论】:

      【解决方案3】:

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

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

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

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

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

      【讨论】:

        【解决方案4】:

        为什么你把你的 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
        );
        

        【讨论】:

          猜你喜欢
          • 2010-11-01
          • 1970-01-01
          • 2017-07-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多