Проблема с 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/(по умолчанию подключен к Домашнему/Индексу), страница отображает это:
<script language="javascript" src="//Scripts/jquery-1.3.2.js" type="text/javascript" ></script>
Кто-нибудь знает, как решить эту проблему?
EDIT:
FYI: Я использую ASP.NET mvc 2 RC
И это моя конфигурация маршрута:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
Ответы
Ответ 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
У меня была очень похожая проблема с Asp.net, используя Request.ApplicationPath... и завернул ее следующим образом
public string AppRoot()
{
var appPath = Request.ApplicationPath;
if (appPath.EndsWith("/"))
return appPath;
else
return appPath + "/";
}
Ответ 3
Почему вы сохраняете свой 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
);
Ответ 4
Ну, иначе вы можете сделать следующее:
создайте ключ в разделе 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>