[英]automatically rewrite URLs in ASP.NET
我使用VS2010,C#開發一個ASP.NET網站,我的客戶希望我擁有這樣的頁面:
mysite.com/customer(實際上,它們稱為mysite / customer / default.aspx)
因此,我為每個客戶手動創建了幾個文件夾,並在該文件夾中插入了default.aspx文件,以便用戶可以通過鍵入mysite.com/customer查看客戶頁面。
有沒有更好的方法來執行此方案? 我不想擁有mysite.com/customer1.aspx,我不想擁有mysite.com/customer1,是否可以刪除文件夾(及其包含default.aspx文件的文件夾)並使用我的客戶數據庫自動生成某些內容?
我應該使用URL重寫嗎? 無論如何,我可以創建頁面mysite.com/customer1.aspx,並且用戶可以通過鍵入mysite.com/customer1來查看它嗎?
我認為可以在web.config中重寫URL,但是我不想在web.config中手動進行操作,因為我的頁面每天都會增加
謝謝
如果您真的想在代碼中而不是在配置中執行此操作,則可以使用HttpContext的RewritePath方法在Application_BeginRequest中自己重寫路徑。
例如(這是一個非常簡化的示例),如果您的aspx位於子文件夾的根目錄中,則可能會如下所示:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
if (HttpContext.Current.Request.Path.StartsWith("/customer"))
HttpContext.Current.RewritePath("/customer/whatever.aspx");
}
注意:這將忽略必須提取並重新添加的所有查詢字符串,並且如果您希望它不區分大小寫,則也必須進行處理。
基於配置的URL重寫是您的最佳選擇。 在這里查看: http : //msdn.microsoft.com/en-us/library/ms972974.aspx 。 重寫基於模式,因此您所描述的內容(到mysite.com/customer1的mysite.com/customer1.aspx)是可能的。
ASP.NET路由是執行此操作的最佳方法, http://msdn.microsoft.com/zh-cn/library/cc668201.aspx
我已經寫了一個導航項目,也會對您有幫助, http://navigation.codeplex.com/-如果您對此感興趣並需要任何幫助,請告訴我。
如果您(實際上)願意嘗試重寫URL,為什么不嘗試ASP.net 4 Web Pages ?
可能的挑戰:
@
而不是<%=..%>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.