2016-03-07 67 views
0

我在webpages_UsersInRoles中添加两个用户和两个角色。我正在尝试检查登录到应用程序的用户的角色。在Webmatrix中检查角色

这里是我的代码:

var UserId = WebSecurity.GetUserId(HttpContext.Current.User.Identity.Name); 
var User = WebSecurity.CurrentUserName; 
var db = Database.Open("ApplicationServices"); 
var stQueryString = "SELECT * FROM Table1 WHERE (UserId) = (UserId) ORDER BY SubmitDate DESC"; 
var data = db.Query(stQueryString, UserId); 
var grid = new WebGrid(data, rowsPerPage:20); 

var AdminQueryString = "SELECT * FROM Table1 ORDER BY SubmitDate DESC"; 
var AdminData = db.Query(AdminQueryString); 
var AdminGrid = new WebGrid(AdminData, rowsPerPage:20); 

<div id="Divgrid"> 
    @if (Roles.IsUserInRole(UserId, "admin") && (AdminData.Any())){ 
       @AdminGrid.GetHtml(
       tableStyle: "grid", 
       headerStyle: "grid-header", 
       footerStyle: "grid-footer", 
       alternatingRowStyle: "grid-alternating-row", 
       selectedRowStyle: "grid-selected-row", 
       rowStyle: "grid-row-style", 
       columns: AdminGrid.Columns(
        AdminGrid.Column(header:"", format:@<a href="View/@item.Id">View</a>), 
        AdminGrid.Column(header:"", format:@<a href="Treatment/@item.Id">Treatment</a>), 
        AdminGrid.Column("Name", format:@<text>@item.ClientName</text>), 
        AdminGrid.Column("Date", format:@<text>@item.SubmitDate</text>))) } 
     else if (Roles.IsUserInRole(UserId, "user") && (data.Any())) { 
       @grid.GetHtml(
       tableStyle: "grid", 
       headerStyle: "grid-header", 
       footerStyle: "grid-footer", 
       alternatingRowStyle: "grid-alternating-row", 
       selectedRowStyle: "grid-selected-row", 
       rowStyle: "grid-row-style", 
       columns: grid.Columns(
         grid.Column(header:"", format:@<a href="View/@item.Id">View</a>), 
         grid.Column(header:"", format:@<a href="Treatment/@item.Id">Treatment</a>), 
         grid.Column("Name", format:@<text>@item.ClientName</text>), 
         grid.Column("Date", format:@<text>@item.SubmitDate</text>))) }      

    </div> 

这里是我得到的错误:

CS1502:为“System.Web.Security.Roles.IsUserInRole(字符串,字符串的最佳重载的方法匹配)'有一些无效参数

回答

0

IsUserInRole有两个参数,第一个是用户名,而不是用户ID。您可以使用WebSecurity.CurrentUserName来代替拥有UserID的地方。

的一个问题是该查询需要改变,以允许通过用户名作为参数:

var stQueryString = "SELECT * FROM Table1 WHERE UserId = @0 ORDER BY SubmitDate DESC"; 

的@ 0表示采取在查询被传递的参数。

+0

我试过了,虽然它不给我一个错误,但它也不承认角色。我只能让一个人坐在电网中,而不是每个人。 – tnbumbray

+0

你的其他代码看起来像是什么创建adminData和adminGrid等?那里可能有一个错误。 – Knox

+0

我编辑了代码以包含顶部。 – tnbumbray