我正在不断测试ASP.NET MVC 2 Preview 2的新功能:“一个项目中的区域”。 目前我在aspx代码中链接到css和js文件时遇到问题。
当网址指向没有ID的网址时,一切正常:
当网址包含参数:
时,会出现问题然后页面无法从/ content和/ scripts找到css和js文件。
我认为问题与路由有关。我有标准的路由规则集,例如:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
AreaRegistration.RegisterAllAreas();
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
并在该地区的路线配置中:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
}
aspx文件中的示例资源href:
<link href="../../Content/datatables.css" rel="stylesheet" type="text/css" />
有人能提出解决方案来解决资源不良的问题吗?
答案 0 :(得分:1)
当您使用URL路由时,您不知道您的URL中的/ many / path / parts将如何提前。所以你根本不能使用路径相对的URL:你不知道你需要多少个'..'段。
相反,请使用有根网址:
<link href="/Content/datatables.css" rel="stylesheet" type="text/css" />
如果您的应用程序可以挂载在非根URL上(例如,在您的area
之一下),则必须输出该区域名称作为根URL的一部分。(推测这是使用{获得的} {1}}。)
答案 1 :(得分:0)
怎么样,设置runat =“server”属性。
<head runat="server">
<link href="~/Content/datatables.css" rel="stylesheet" type="text/css" runat="server" />
...