2017-01-24 54 views
6

如何讀取aspx頁面中的任何字符串。在asp.net中讀取查詢字符串而不指定任何頁面名稱

例如:http://foo.com/bike站在

我想讀/獲取字符串指定aspx頁面。 預期頁面字符串自行車站在
預期頁面getstring.aspx

在這裏,我想讀的字符串,並重定向到指定的頁面。
注:我喜歡做這只是ASP.Net(不與MVC)

+0

你想要得到的查詢字符串參數和重定向到頁面基於參數? –

+0

預期的頁面總是'getstring.aspx'? –

+0

是AliBaig。基於查詢字符串我喜歡重定向到另一個頁面。而getstring.aspx只是一個可以更改的示例頁面名稱。 – Sensa

回答

2

您可以使用IIS URL Rewrite Module這一點。安裝後,您可以在重寫URL的Web.Config System.Webserver節點中創建規則,以便字符串可以作爲QueryString在後面的代碼中處理。

<rewrite> 
    <rules> 
    <rule name="getString" stopProcessing="true"> 
     <match url="^([a-z0-9- /]+)$" ignoreCase="true"/> 
     <action type="Rewrite" url="getstring.aspx?string={R:1}"/> 
    </rule>  
    </rules> 
</rewrite> 

然後,你可以簡單地用此得到的字符串值:

string getString = Request.QueryString["string"]; 

但如果有其他的網頁超過getstring.aspx不是需要被訪問,因爲每個請求目前正在送他將創建一個問題到getstring.aspx。也許最好使用前綴,以便您可以將請求URL標識爲具有字符串的請求URL。

http://foo.com/getstring/bike stand 

<match url="^getstring/([a-z0-9- /]+)$" ignoreCase="true"/> 
4

您可以在此使用Route可能解決。我做了一個簡單的演示,你可以在幾分鐘內嘗試。在Global.asax.cs文件,添加這個方法:

void RegisterRoutes(RouteCollection routes) 
{ 
    routes.MapPageRoute("Products", 
     "Products/{product}", "~/getstring.aspx", 
     false, 
     new RouteValueDictionary { { "product", "NoneSelected" } } 
    ); 
} 

在同一個文件,在現有void Application_Start(object sender, EventArgs e)方法,添加RegisterRoutes(RouteTable.Routes);

void Application_Start(object sender, EventArgs e) 
{ 
    RegisterRoutes(RouteTable.Routes); 
} 

有了這個,你已經配置了Route將採取像這樣的請求:

http://foo.com/Products/bike%20stand 

並將其映射到getstring.aspx。請注意,我已經在URL中編碼了空間。

getstring.aspx你可以這樣訪問值(「自行車支架」):

protected void Page_Load(object sender, EventArgs e) 
{ 
    string routeValue = ""; 
    if (RouteData.Values.ContainsKey("product")) 
     routeValue = RouteData.Values["product"].ToString(); 

    //routeValue now contains "bike stand" 

    SelectedProduct.Text = routeValue; 
} 

我對路徑「產品」的應用程序文件夾下的此示例中設置了Route。我不建議你像在問題中一樣直接在應用程序文件夾下設置你的路線。您可以它但如果你絕對要:

void RegisterRoutes(RouteCollection routes) 
{ 
    routes.MapPageRoute("Products", 
     "{product}", "~/getstring.aspx", 
     false, 
     new RouteValueDictionary { { "product", "NoneSelected" } } 
    ); 
} 
3

它可能無法滿足您的需要選擇最好的方式,但如果你想從URL得到字符串的一部分,你可以使用URI段。

HttpContext.Current.Request.Url.Segments.Select(x=>x.TrimEnd‌​('/')).Skip(2).ToArr‌​ay(); 

OR

new Uri("http://www.someurl.com/foo/xyz/index.htm#extra_text").Segments 

結果:[ "/", "foo/", "xyz/", "index.html" ]

閱讀串,你可以做後,任何你想要像重定向等

相關問題