0

这段代码

    @Html.TextBoxFor(m => m.UserName, new { @class = "validate[required]", disabled = "disabled", value = ViewBag.user[0].UserName }) @Html.ValidationMessage("usernameVal", "*")

当它到达时抛出异常ViewBag.user[0].UserName

例外:

'System.Web.Security.MembershipUserCollection.this[string]' 的最佳重载方法匹配有一些无效参数

行动:

 public ActionResult EditUser()
    {

        //Resgata username do registro
        string user = Request.QueryString["username"];

        try 
        {   //Se nome foi resgatado
                String.IsNullOrEmpty(user)

                MembershipUserCollection muc = Membership.FindUsersByName(user);
                ViewBag.user = muc;


            return PartialView();

        }
        catch (Exception e)
        {

            return Content("Erro: " + e);

        }

    }
4

2 回答 2

0

在您看来,您正在使用整数索引访问集合

ViewBag.user[0]

正如异常所述,要访问 MembershipUserCollection 您需要提供一个字符串参数。

请参阅文档 - http://msdn.microsoft.com/en-us/library/system.web.security.membershipusercollection.item.aspx

获取指定用户名引用的集合中的成员资格用户。

无需从 Controller 方法返回集合,只需返回单个 MembershipUser 对象

在您的控制器中:

        MembershipUser membershipUser = Membership.GetUser(user, false);
        ViewBag.user = membershipUser;

在您看来:

将 value = ViewBag.user[0].UserName 替换为 value = ViewBag.user.UserName

于 2012-11-22T14:09:33.027 回答
0

该错误表明该集合需要一个字符串键来访问非索引的元素。

你可以试试这个

ViewBag.user.ElementAt(0).UserName 

或者,如果您希望页面上有一个用户对象,则设置ViewBag.User为该用户对象并避免在位置 0 查找用户

于 2012-11-22T14:14:11.217 回答