我在一個似乎正在工作的網站上設置網址路由,但我無法讓它忽略我的JavaScript文件。我有使用ASP.NET開發服務器和IIS 7相同的問題。我沒有使用mvc。ASP.NET 4.0路由忽略.js .css等
我曾嘗試以下每個忽略的JavaScript沒有成功
routes.Add(new Route("Scripts/", new StopRoutingHandler()));
routes.Add(new Route("Scripts/{*pathInfo}", new StopRoutingHandler()));
routes.Add(new Route("{resource}.js", new StopRoutingHandler()));
routes.Add(new Route("{resource}.js/{*pathInfo}", new StopRoutingHandler()));
routes.Add(new Route("*.js", new StopRoutingHandler()));
routes.Ignore("Scripts/{*pathInfo}");
routes.Ignore("{file}.js");
routes.Ignore("{resource}.js/{*pathInfo}");
routes.Ignore("Scripts/{*pathInfo}");
routes.Ignore("{folder}/{*pathInfo}", new { folder = "Scripts" });
routes.Ignore("{*alljs}", new { alljs = @".*\.js(/.*)?" });
RouteTable.Routes.Ignore("{resource}.js/{*pathInfo}");
RouteTable.Routes.RouteExistingFiles = false;
下面是一個基本的測試頁面,我創建隔離問題
的Global.asax包含
void Application_Start(object sender, EventArgs e) {
RegisterRoutes(RouteTable.Routes);
}
void RegisterRoutes(RouteCollection routes){
routes.Ignore("{*alljs}", new { alljs = @".*\.js(/.*)?" });
routes.MapPageRoute("testpage", "testpage", "~/testpage.aspx");
routes.MapPageRoute("area", "testpage/area/{name}", "~/testpage.aspx");
}
testpage.aspx: -
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="testpage.aspx.cs" Inherits="testpage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Test.aspx</title>
<script type="text/javascript" src="./Scripts/test.js"></script>
</head>
<body>
<form id="form1" runat="server">
<p id="jsLoaded">false</p>
</form>
</body>
</html>
個
testpage.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class testpage : System.Web.UI.Page{
protected void Page_Load(object sender, EventArgs e)
{
if (Page.RouteData.Values.ContainsKey("name")) { Response.Write(Page.RouteData.Values["name"].ToString()); }
}
}
test.js
window.onload = function() {
if (document.getElementById('jsLoaded')) {
document.getElementById('jsLoaded').innerHTML = 'test.js loaded';
}
}
導航到網站/ testpage /區域/ AREANAME顯示路由的工作,但JavaScript文件是不加載。這讓我瘋狂!
Henry
我需要我的JavaScript(和CSS,圖像等)是給客戶端可見 – Henry 2012-08-15 10:31:51
那麼它歸結爲一個選擇。如果您希望客戶端能夠查看圖像並在訪問時讓JavaScript爲您的網站運行,那麼它必須被允許提供給他們的機器。如果你告訴我爲什麼要限制文件,這可能會幫助我更清楚地回答問題。 – Matt 2012-08-15 16:33:15
對不起,如果我不清楚,我不想限制訪問。目前我有我的網站使用查詢字符串,如網站/ testpage.aspx 和site/testpage.aspx?area = areaname我想使用路由,並仍然有我的JavaScript運行時,通過類似 網站訪問頁面/測試頁和網站/測試頁面/區域/ areaname 我認爲這將通過告訴路由不路由JavaScript,但也許我誤解了它的功能來實現。 – Henry 2012-08-19 10:23:16