我们在主索引页面中使用了iframe。我写了一个控制器,允许一个人请求资源(图像,Js,Css等......),就像你使用处理程序一样。
@Html.Css("Ico16", "Add")
//Converts to this
<link src="Style?Key=ico16&File=add" type="text/css" />
请求图片的路线也将如此显示:
<img src="Image?Key=ico16&File=add" />
但是,下一个路线仅适用于Iframe中显示的视图。
<link src="Default/Style?Key=Ico16&File=Add" type="text/css" />
最后,虽然css只请求上面显示的Action,但是水会变得更加模糊...如果我在外部javascript文件中,我必须再次将控制器名称添加到路径中:
$(document).ready(function()
{
$('#SomeDiv').append('<img src="Default/Image?Key=ico16&File=add"></img>');
})
如何统一这些路线以使它们一致?我坦率地不在乎它的编写方式,只要它与不同的内容区域没有区别。
路线:
routes.MapRoute(
"PlatformIFrame",
"{controller}/{action}/{key}", // URL with parameters
new { controller = "Default", action = "Index", key = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Platform",
"{action}/{key}", // URL with parameters
new { controller = "Default", action = "Index", key = UrlParameter.Optional } // Parameter defaults
);
控制器:
public class DefaultController : Controller
{
public ActionResult Style(string key, string file)
{
}
public ActionResult Script(string key, string file)
{
}
public ActionResult Image(string key, string file)
{
}
}
答案 0 :(得分:0)
我已经考虑过这一点,我认为答案可能非常简单。
仅使用此路线:
routes.MapRoute(
"Platform",
"{action}/{key}", // URL with parameters
new { controller = "Default", action = "Index", key = UrlParameter.Optional } // Parameter defaults
);
仅使用此样式(请注意您的网址的前导“/”):
<link src="/Style?Key=Ico16&File=Add" type="text/css" />
如果你想完全摆脱这个问题,你也可以这样做:
<link src="<%: Url.Action("Style", "Default", new { key = "Ico16", file = "Add" }) %>" type="text/css" />
如果选择上述选项,则应将包含控制器名称的路由保留在URL中,并删除没有控制器名称的路由。