2012-09-11 51 views
0

参照This questionScottGu's Documentation,我已成功为我的网站的会员资料页面路由了一个Url。Url路由查询

我的页面重定向~/page/MemberName~/page/Default.aspx,其中用户MemberName要求信息。
直到现在,这工作得很好。

我需要一种方法,现在允许用户编辑他们的数据,并希望像~/page/MemberName/Private这样访问它。 Private标签会告诉用户可以编辑其内容的页面。

+0

你不能设置用户角色并提供编辑权限吗? –

+0

如果您使用的是MVC,则可以设置为您的控制操作或将DataAnnotation属性[Authorize]读取[此链接]设置为类(http://msdn.microsoft.com/zh-cn/library/system.componentmodel.dataannotations。 authorizationattribute.authorize%28v = vs.91%29.aspx)和[Membership and Authorization](http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-7 ) – Gabrik

+0

我使用自己的基于SQL的授权,并将使用它来引用我的页面上的数据。 – TheGeekZn

回答

0

虽然我会考虑做什么@huMpty duMpty建议和使用角色为此。

你只需要设置你的路线来包含URL中的额外信息。

routes.MapPageRoute("SalesRoute", 
    "page/{MemberName}/{ExtraData}", 
    "~/Default.aspx"); 

,然后访问它,就像你会成员名称:如果你想确保只有“私人”

Page.RouteData.Values["ExtraData"]; 

是不断传递,您可以通过一个路由添加约束的过载。

routes.MapPageRoute("SalesRoute", 
    "page/{MemberName}/{ExtraData}", 
    "~/Default.aspx", 
    false, 
    new RouteValueDictionary(), 
    new RouteValueDictionary{ 
     { "ExtraData", "[P|p]rivate" } 
    }); 

值得一提的是,你可能要测试这个漂亮的以及你可能最终得到一个过于严格的路由规则。

+0

我改变了route.MapPageRoute(“”,“Page/{address}/{data}”,“〜/ Page/Default.aspx”);',并添加了'string extraData = Page.RouteData 。.Values [ “数据”]的ToString();'。 现在,当我尝试进入/ User/Private时,只要我想要转到/ User /,并且找不到“资源无法找到”,我就会得到一个“对象引用未设置为对象的实例。 – TheGeekZn