2010-12-15 36 views
0

我實現了ASP.NET用戶控件。如何在ASP.NET中創建「公共」用戶配置文件頁面(3.5)

每個用戶都可以登錄並更新他們的個人數據,例如myData.html

私人頁面上現在,我想他們的個人資料的一部分,以顯示一個公共只讀頁面上,例如 - userGreg45public.html

如何實現或修改用戶控件,允許每個用戶擁有自己的唯一公共頁面? (注 - 有一組「文件名稱」對每個用戶來說都是相同的,因爲只有特定人員登錄時才能訪問它們。例如,myData.html具有相同的名稱,但顯示的內容不同數據基於誰登錄。「公共頁面」必須爲每個成員具有唯一的文件名)

謝謝。

回答

4

這聽起來像問題是你想讓每個用戶都有自己的網址......是這樣嗎?

您可以使用URL重寫。其中一種更簡單的方法是在Global.asax文件的Application_BeginRequest方法中使用HttpContext.RewritePath

編輯:

我在這裏做一些假設加樣品代碼...我想提出的假設是:a)用戶有一個名字,B)用戶有一個姓氏和c)用戶有一些獨特的標識符,在我的情況下,我正在使用「userId」。

首先,您需要決定公共網址的格式。像這樣的東西可以工作:

http://www.yoursite.com/public/firstname-lastname-1234.aspx 

其中1234是userId。

接下來,您將需要一個函數來構建這些URL。也許這樣的東西:

String ToPublicUrl(String firstName, String lastName, int userId) 
{ 
    return String.Format("http://www.yoursite.com/public/{0}-{1}-{2}.aspx", 
     Regex.Replace(firstName, "[^a-zA-Z]", ""), 
     Regex.Replace(lastName, "[^a-zA-Z]", ""), 
     userId); 
} 

請注意我是如何剝離出任何非字母字符。

現在,在Global.asax文件,添加以下代碼:

static Regex ProfileRegex = new Regex(@"/public/(?<firstname>[a-zA-Z]+)-(?<lastname>[a-zA-Z]+)-(?<userid>[0-9]+)\.aspx$", 
    RegexOptions.IgnoreCase | RegexOptions.Compiled); 

void Application_BeginRequest(object sender, EventArgs e) 
{ 
    Match match = ProfileRegex.Match(Context.Request.FilePath); 
    if((match != null) && match.Success) 
    { 
     Context.RewritePath((String.Format("~/public/userProfile.aspx?userId={0}", 
      match.Groups["userid"])); 
    } 
} 

有很多東西會在這裏的。首先,通過簡單的定義這個函數,ASP.Net將把它訂閱到HttpApplication.BeginRequest事件。

接下來是正確的正則表達式。它基本上匹配對用戶個人資料頁面的任何請求,並在內部告訴ASP.Net將請求路由到另一個頁面。新的請求將是這個樣子:

http://www.yoursite.com/public/userProfile.aspx?userId=1234 

它是由你來實現/public/userProfile.aspx頁。有很多方法可以使事物只讀。它可能是直接替代TextBox控件與Label控件?

如果您有多個要公開的頁面,則可以實現多個重寫規則。 (雖然在某些時候你最好使用像thisthis這樣的組件)。

作爲供參考,我參考this page的樣品進行重寫。如果您有任何問題,請告訴我。

+0

非常感謝。這讓我更好地瞭解正在發生的事情以及我需要做什麼來創建該網址。看來只讀應該不是一個大問題。我會在本週末嘗試一下,再次感謝。 – 2010-12-16 20:50:11

+1

沒問題...祝你好運! – dana 2010-12-17 05:17:45

+1

Dana,何時以及如何使用ToPublicUrl()?謝謝。 – 2010-12-30 03:20:41

2

您可以默認爲訪問該網站的用戶分配角色,如「guest」。

1

我剛剛在網站上實現了這樣的東西。我創建了兩頁。一個是私人的,並要求用戶登錄。該頁面允許用戶編輯他們的個人資料。

而另一頁是公共頁面。它不允許編輯,並且它位於任何人都可以看到的位置。

+0

是的,......... – 2010-12-15 05:38:55

相關問題