簡體   English   中英

自動重寫ASP.NET中的URL

[英]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

  • 您可以在C#(cshtml)或VB(vbhtml)中執行Razor語法。
  • 默認情況下,您會獲得“漂亮的網址”(沒有配置,也沒有global.asax路由)
  • 您可以使用Visual Studio甚至WebMatrix

可能的挑戰:

  • (新)語法-但並不難-大多是@而不是<%=..%>
  • 如果您對ASP.Net控件更滿意,那么它可能比簡單得多更難...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM