Razor 检查Webmatrix中的角色
我在网页中添加了两个用户和两个角色。我正在尝试检查登录到应用程序的用户的角色 这是我的密码:Razor 检查Webmatrix中的角色,razor,roles,webmatrix,razor-2,user-roles,Razor,Roles,Webmatrix,Razor 2,User Roles,我在网页中添加了两个用户和两个角色。我正在尝试检查登录到应用程序的用户的角色 这是我的密码: var UserId = WebSecurity.GetUserId(HttpContext.Current.User.Identity.Name); var User = WebSecurity.CurrentUserName; var db = Database.Open("ApplicationServices"); var stQueryString = "SELECT * FROM Table
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>
var UserId=WebSecurity.GetUserId(HttpContext.Current.User.Identity.Name);
var User=WebSecurity.CurrentUserName;
var db=Database.Open(“ApplicationServices”);
var stQueryString=“从表1中选择*,其中(UserId)=(UserId)按提交日期说明排序”;
var data=db.Query(stQueryString,UserId);
var grid=新的WebGrid(数据,行页面:20);
var AdminQueryString=“按提交日期描述从表1中选择*”;
var AdminData=db.Query(AdminQueryString);
var AdminGrid=新的WebGrid(AdminData,rowsPerPage:20);
@if(Roles.IsUserInRole(UserId,“admin”)&&(AdminData.Any()){
@AdminGrid.GetHtml(
表样式:“网格”,
标题样式:“网格标题”,
页脚样式:“网格页脚”,
交替行样式:“网格交替行”,
selectedRowStyle:“网格选定行”,
行样式:“网格行样式”,
columns:AdminGrid.columns(
AdminGrid.Column(标题:“”,格式:@),
AdminGrid.Column(标题:“”,格式:@),
AdminGrid.Column(“名称”,格式:@@item.ClientName),
AdminGrid.Column(“日期”,格式:@@item.SubmitDate))}
else if(Roles.IsUserInRole(UserId,“user”)&&(data.Any()){
@grid.GetHtml(
表样式:“网格”,
标题样式:“网格标题”,
页脚样式:“网格页脚”,
交替行样式:“网格交替行”,
selectedRowStyle:“网格选定行”,
行样式:“网格行样式”,
列:grid.columns(
grid.列(标题:“”,格式:@),
grid.列(标题:“”,格式:@),
grid.Column(“名称”,格式:@@item.ClientName),
grid.Column(“日期”,格式:@@item.SubmitDate))}
以下是我得到的错误:
CS1502:与“System.Web.Security.Roles.IsUserInRole(string,string)”匹配的最佳重载方法具有一些无效参数IsUserInRole具有两个参数,第一个参数是用户名,而不是用户ID。您可以使用WebSecurity.CurrentUserName来代替用户ID 一个问题是查询需要更改以允许将用户名作为参数传递:
var stQueryString = "SELECT * FROM Table1 WHERE UserId = @0 ORDER BY SubmitDate DESC";
@0表示接受在查询中传递的参数。我尝试过,虽然它没有给我错误,但它也无法识别角色。我应该只在网格中找到一个人,而不是所有人。创建adminData和adminGrid的代码的其余部分是什么样子的?那里可能有个bug。我编辑了我的回复。现在,用户只会拿回他的行,而管理员应该拿回所有行