Проблема с Url.Content в ASP.NET MVC на маршруте по умолчанию

Если я использую следующую строку в представлении по умолчанию /Home/Index

<script language="javascript" src="<%=Url.Content("~/Scripts/jquery-1.3.2.js")%>" type="text/javascript" ></script>

Если я перехожу в это место, используя следующий URL-адрес http://127.0.0.1:9999/Home/Index, страница отображается правильно.

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

Если я использую следующий URL-адрес 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
);

person Beriz    schedule 22.01.2010    source источник
comment
извините, но я не могу воспроизвести это поведение. не могли бы вы опубликовать содержимое вашей процедуры RegisterRoutes() и какую версию asp.net mvc вы используете?   -  person marc.d    schedule 22.01.2010
comment
Как говорит Марк, этого не должно происходить. Я тоже не могу воспроизвести.   -  person mare    schedule 19.02.2010


Ответы (4)


Если вы используете IIS6 или WinXP Cassini, вы должны зарегистрировать еще один маршрут:

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

У меня была очень похожая проблема с Asp.net с использованием Request.ApplicationPath... и я завернул ее следующим образом.

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

    }
person Maslow    schedule 28.01.2010

Ну, как вариант, можно сделать следующее:

создайте ключ в разделе appSettings файла web.config.

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

Теперь, когда вы хотите присвоить значение «src» любому изображению, javascript или файлу css, вы можете использовать этот ключ. для вас будет определен корень, и после этого вы сможете определить, по какому пути вы разместили свой файл. то есть в вашем случае:

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

Почему вы храните свой идентификатор в виде пустой строки? Я думаю, что это может быть причиной проблемы. Вы можете добиться лучших результатов, попробовав следующее:

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
);
person Parv Sharma    schedule 23.04.2012