MembershipUserCollection有一些无效的参数

时间:2012-11-22 14:02:24

标签: asp.net asp.net-mvc exception asp.net-mvc-4 asp.net-membership

此代码

    @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);

        }

    }

2 个答案:

答案 0 :(得分:0)

在您的视图中,您使用整数索引

访问该集合
ViewBag.user[0]

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

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

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

只需返回单个MembershipUser对象

,而不是从Controller方法返回集合

在你的控制器中:

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

在您看来:

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

答案 1 :(得分:0)

错误显示集合为expecting a string key以访问元素而不是索引。

你可以试试这个

ViewBag.user.ElementAt(0).UserName 

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