如何讀取aspx頁面中的任何字符串。在asp.net中讀取查詢字符串而不指定任何頁面名稱
例如:http://foo.com/bike站在
我想讀/獲取字符串指定aspx頁面。 預期頁面字符串自行車站在
預期頁面getstring.aspx
在這裏,我想讀的字符串,並重定向到指定的頁面。
注:我喜歡做這只是ASP.Net(不與MVC)
如何讀取aspx頁面中的任何字符串。在asp.net中讀取查詢字符串而不指定任何頁面名稱
例如:http://foo.com/bike站在
我想讀/獲取字符串指定aspx頁面。 預期頁面字符串自行車站在
預期頁面getstring.aspx
在這裏,我想讀的字符串,並重定向到指定的頁面。
注:我喜歡做這只是ASP.Net(不與MVC)
您可以使用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"/>
您可以在此使用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" } }
);
}
它可能無法滿足您的需要選擇最好的方式,但如果你想從URL得到字符串的一部分,你可以使用URI段。
HttpContext.Current.Request.Url.Segments.Select(x=>x.TrimEnd('/')).Skip(2).ToArray();
OR
new Uri("http://www.someurl.com/foo/xyz/index.htm#extra_text").Segments
結果:[ "/", "foo/", "xyz/", "index.html" ]
閱讀串,你可以做後,任何你想要像重定向等
你想要得到的查詢字符串參數和重定向到頁面基於參數? –
預期的頁面總是'getstring.aspx'? –
是AliBaig。基於查詢字符串我喜歡重定向到另一個頁面。而getstring.aspx只是一個可以更改的示例頁面名稱。 – Sensa