检查 Webmatrix 中的角色
Check Roles in Webmatrix
我在 webpages_UsersInRoles 中添加了两个用户和两个角色。我正在尝试检查登录到应用程序的用户的角色。
这是我的代码:
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(string, string)' 的最佳重载方法匹配有一些无效参数
IsUserInRole 有两个参数,第一个是用户名,不是用户 ID。您可以使用 WebSecurity.CurrentUserName 代替您拥有 UserID 的位置。
一个问题是查询需要更改以允许将用户名作为参数传递:
var stQueryString = "SELECT * FROM Table1 WHERE UserId = @0 ORDER BY SubmitDate DESC";
@0 表示获取在查询中传递的参数。
我在 webpages_UsersInRoles 中添加了两个用户和两个角色。我正在尝试检查登录到应用程序的用户的角色。
这是我的代码:
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(string, string)' 的最佳重载方法匹配有一些无效参数
IsUserInRole 有两个参数,第一个是用户名,不是用户 ID。您可以使用 WebSecurity.CurrentUserName 代替您拥有 UserID 的位置。
一个问题是查询需要更改以允许将用户名作为参数传递:
var stQueryString = "SELECT * FROM Table1 WHERE UserId = @0 ORDER BY SubmitDate DESC";
@0 表示获取在查询中传递的参数。