我实现了ASP.NET用户控件 .
每个用户都可以登录并更新他们的个人数据,例如在私人页面上 myData.html
现在,我希望他们的 Profiles 的一部分显示在公共只读页面上,例如 - userGreg45public.html
如何实现或修改用户控件,以允许每个用户拥有自己的 unique 公共页面?
(注意 - 每个用户都有一组“文件”命名完全相同,因为只有在特定人员登录时才能访问这些文件 . 例如,myData.html具有相同的名称,但根据谁显示不同的数据登录 . “公共页面”必须为每个成员提供唯一的文件名)
谢谢 .
3 回答
听起来问题是你希望每个用户都有自己的网址......是这样的吗?
您可以使用URL重写 . 一种更简单的方法是在
Global.asax
文件的Application_BeginRequest
方法中使用HttpContext.RewritePath .EDIT: 添加了示例代码
我在这里做了一些假设......我所做的假设是:a)用户有名字,b)用户有姓氏,c)用户有一些唯一标识符,在我的情况下,我使用的是“userId” .
首先,您必须决定公共网址的格式 . 像这样的东西可以工作:
其中1234是userId .
接下来,您将需要一个函数来构建这些URL . 也许这样的东西:
请注意我是如何剥离任何非字母字符的 .
现在,在Global.asax文件中,添加以下代码:
这里有很多东西 . 首先,通过简单地定义此函数,ASP.Net将订阅它到HttpApplication.BeginRequest事件 .
接下来是Regex进行繁重的工作 . 它基本上匹配任何对用户配置文件页面的请求,并在内部告诉ASP.Net将请求路由到另一个页面 . 新请求看起来像这样:
由您来实现
/public/userProfile.aspx
页面 . 有许多方法可以让事情变得简单 . 它可能像用Label控件替换TextBox控件一样直截了当?如果您想要公开多个页面,则可以实现多个重写规则 . (虽然在某些时候你最好使用像this或this这样的组件) .
作为一个FYI,我在this page上引用了重写内容的样本 . 如果您有任何疑问,请告诉我 .
默认情况下,您可以为访问过该站点的用户分配“guest”等角色 .
我刚刚在网站上实现了这样的东西 . 我创建了两个页面 . 一个是私有的并且要求用户登录 . 该页面允许用户编辑他们的 Profiles .
另一页是公共页面 . 它不允许编辑,它位于任何人都可以查看的位置 .