2

我试图理解为什么当我尝试从包含我的应用程序角色的字符串数组中获取元素时会出现异常。

错误:对象引用未设置为对象的实例。(ViewBag.roles)

这是我获得角色的方式:

   public ActionResult AdminRolesAndAccessRules()
   {
        String[] rolesArray;
        rolesArray = Roles.GetAllRoles();

        ViewBag.roles = rolesArray;

        return PartialView();
    }

以下是我使用这些信息的方式:

<div class="scroller">
    <table>
        @foreach (MembershipUserCollection muc in ViewBag.roles)
    {                                        
        if(column == 1) {
            classe = "whiteRow";
            column = 0;
        }
        else {
            classe = "grayRow";
            column = 1;
        }
    <tr class="@classe"> 
        <td class="adminSetFormRowUsuario">role</td> 
        <td class="adminSetFormRowGrupo"></td> 
        <td class="formAction centerAlign">
            <img src="~/Images/editar.gif" alt="Editar"/>
            <span style="margin-left:5px"></span>
            <a href='javascript:AjaxRemoveUser("/Account/DeleteUser?role=@muc", "POST", "DinamicContent", "AdminSettingsTabsStructure")'><img src="~/Images/excluir.gif" alt="Excluir"/></a>
        </td> 
    </tr>

    }     
    </table>

调试我可以看到 2 个值,ViewBag.roles但系统仍然抱怨 Null 或未实例化对象。

4

1 回答 1

1
// string array being assigned here
String[] rolesArray = Roles.GetAllRoles();
ViewBag.roles = rolesArray;

调试我可以在 ViewBag.rules 中看到 2 个值,但系统仍然抱怨 Null 或未实例化对象。

这两个值大概是您分配的角色。

// This looks wrong...you are treating each string in the array as MembershipUserCollection
@foreach (MembershipUserCollection muc in ViewBag.roles)
{
}

// instead, this should give you the role names
@foreach( string role in ViewBag.roles )
{
    <div>@role</div>
}
于 2012-11-21T01:00:21.683 回答