我用我的.NET網站路由。路由問題(.NET不MVC)
我希望這個網址
http://www.website.com/condos/rent/{state}/{area}
要轉到http://www.website.com/condos.aspx
然後拿起國家和地區。
這工作得很好:
routes.MapPageRoute("CondosForRentInArea", "condos/rent/{state}/
{area}", "~/condos.aspx");
,但我有一些問題的JavaScript。因爲我不能寫:
routes.MapPageRoute("StateAreaJS", "condos/rent/{state}/{area}/scripts/
{filename}.js", "~/scripts/{filename}.js");
我發現了另外一個問題在這裏#2:Wildcards with ASP.NET MVC MapPageRoute to support organizing legacy code
,但我不是在這個網站使用MVC。我曾經嘗試這樣做:
routes.Add("CondosRentStateAreaJS", new Route("condos/rent/{state}/{area}/scripts/
{filename}.js", new StateAreaJSRouteHandler()));
和:
public class StateAreaJSRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
string filename = requestContext.RouteData.Values["filename"] as string;
if (string.IsNullOrEmpty(filename))
{
requestContext.HttpContext.Response.Clear();
requestContext.HttpContext.Response.StatusCode = 404;
requestContext.HttpContext.Response.End();
}
else
{
requestContext.HttpContext.Response.Clear();
requestContext.HttpContext.Response.ContentType = "text/javascript";
// find physical path to image here.
string filepath = requestContext.HttpContext.Server.MapPath("~/scripts/" + filename + ".js");
requestContext.HttpContext.Response.WriteFile(filepath);
requestContext.HttpContext.Response.End();
}
return null;
}
}
堅果我不認爲代碼調用,因爲將一個破發點中的行「字符串的文件名......」嗟。
奇怪的是,CSS是存在的,文件夾/文件名,然後服務器刀片../../../但JS丟失。
那麼,如何正確地得到/state/area/scripts/file.js是公正"~/scripts/file.js"
?
---------------編輯---------------
你絕對讓我走上正軌。我要通過代碼隱藏添加腳本和樣式。我最終得到一個很好的解決方案是這樣的:
HtmlGenericControl validatejs = new HtmlGenericControl("script");
validatejs.Attributes.Add("type", "text/javascript");
validatejs.Attributes.Add("src", ResolveUrl("~/scripts/validate.js"));
this.Page.Header.Controls.Add(validatejs);
HtmlLink fontscss = new HtmlLink();
fontscss.Href = "~/styles/fonts.css";
fontscss.Attributes.Add("rel", "stylesheet");
fontscss.Attributes.Add("type", "text/css");
this.Page.Header.Controls.Add(fontscss);
,我只是想增加(對其他Google員工),這種方法使我能夠刪除我的JS和CSS CustomRouteHandlers,使整個項目更有條理,很可能更快。