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.ElementAt(0).UserName 

または、ページに1つのユーザーオブジェクトが必要な場合は、ViewBag.Userその1つのユーザーオブジェクトに設定し、位置0でユーザーを探すのを避けます。

于 2012-11-22T14:14:11.217 に答える
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 に答える