Object ASP.NET将角色分配给用户-“对象引用未设置为对象的实例。”
我正在创建一个基本的角色管理系统,在这个系统中,我的网站的用户可以被添加到特定的角色中,这样他们就可以访问网站的专有部分 我已设法将角色添加到我的数据库中,但当我尝试将用户分配到特定角色时,会出现“对象引用未设置为对象的实例”错误,我无法找出原因 这是我的密码:Object ASP.NET将角色分配给用户-“对象引用未设置为对象的实例。”,object,exception,instance,roles,Object,Exception,Instance,Roles,我正在创建一个基本的角色管理系统,在这个系统中,我的网站的用户可以被添加到特定的角色中,这样他们就可以访问网站的专有部分 我已设法将角色添加到我的数据库中,但当我尝试将用户分配到特定角色时,会出现“对象引用未设置为对象的实例”错误,我无法找出原因 这是我的密码: protected void btnAssignRole_Click(object sender, EventArgs e) { try { if (!Roles.IsUs
protected void btnAssignRole_Click(object sender, EventArgs e)
{
try
{
if (!Roles.IsUserInRole(lstRoles.SelectedItem.Value))
{
Roles.AddUserToRole(lstUsers.SelectedItem.Value, lstRoles.SelectedItem.Value);
lstRoles.DataBind();
lstUsers.DataBind();
litRoleResult.Text = "User added to Role";
}
else
{
litRoleResult.Text = "User already in this Role";
}
}
catch (Exception ex)
{
litRoleResult.Text = ex.Message;
}
}
HTML:
感谢您的帮助。看起来您正在使用一些必须在全局范围内声明的对象:Roles、lstRoles、lstUsers和litRoleResult都必须在某个时候初始化,因为它们没有在您的方法中初始化。 我的怀疑是,如果在这个方法上设置断点,其中一个对象将为null。另外,如果lstUsers或lstRoles没有选择项,我很确定调用SelectedItem.Value会抛出异常;确保SelectedItem具有值它是否具有.HasValue属性?在调用值之前 编辑:对不起,我错过了ASP.NET部分;我假设您的lstUsers和lstrole是页面上的对象。在这种情况下,我肯定倾向于将SelectedItem属性设置为null。列表是否允许多选?已解决 使用Kalmino评论中的链接,我修改了以下内容: 在页面中,我更改了加载方法
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
lstRoles.DataBind();
lstUsers.DataBind();
}
}
到
从我原来的问题我也改变了
if (!Roles.IsUserInRole(lstRoles.SelectedItem.Value))
排队
if (!Roles.IsUserInRole(lstUsers.SelectedItem.Text, lstRoles.SelectedItem.Text))
你好Roles是System.Web.Security中的“Roles”类。我应该在.cs文件的顶部声明这个名称空间。lstRoles和lstUsers是绑定到我的数据库的列表框控件,而litRoleResult是一个文本控件。我也会用html修改我原来的帖子;似乎DataBind存在一些问题,导致.SelectedValue返回为null。看看这是否有帮助:
if (!Roles.IsUserInRole(lstRoles.SelectedItem.Value))
if (!Roles.IsUserInRole(lstUsers.SelectedItem.Text, lstRoles.SelectedItem.Text))