2

すぐに使用できるメンバーシップをMVC4に追加しようとしています。

public ActionResult Register(RegisterModel model)
{
    if (ModelState.IsValid)
    {
        // Attempt to register the user
        try
        {
            WebSecurity.CreateUserAndAccount(model.UserName, model.Password, model.Mobile);
            //I added model.Mobile
            WebSecurity.Login(model.UserName, model.Password);
            return RedirectToAction("Index", "Home");
        }
        catch (MembershipCreateUserException e)
        {
            ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
        }
    }
}

モデルを変更しました

public class RegisterModel
{
    // Username and password methods

    public string Mobile { get; set; }
}

UserProfileモデルにも追加しました。SqlExceptionが発生しましたが、接続が表示されません。とても単純なエラーのようですが。Nvarchar(MAX)このエラーを回避しようとするDBが設定されます。

Invalid column name 'Length' 
4

3 に答える 3

6

追加のプロパティのディクショナリを想定しているため、実際にはエラーがスローされます。試してみてください。

WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new{model.Mobile}, false)

これは、UserProfileTableにMobileという列があることを前提としています。別の列名を指定する場合:

WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new{YourColumnName = model.Mobile}, false)
于 2013-02-12T20:56:31.507 に答える
4

あなたのコメントでは、あなたが使用しているようです

WebSecurity.CreateUserAndAccount(model.UserName, model.Password, model.Mobile);

msdnを見ると、

public static string CreateUserAndAccount(
    string userName,
    string password,
    Object propertyValues,
    bool requireConfirmationToken
)

ここで、propertyValuesは

propertyValuesタイプ:System.Object(オプション)追加のユーザー属性を含むディクショナリ。デフォルトはnullです。

したがって、メソッドを使用すると、model.MobileがpropertyValuesパラメーターとして送信されますが、これは確かにそうではありません。

したがって、モバイルパラメータCreateUserAndAccountを使用できる独自のオーバーロード(または新しいメソッド)を作成する必要があります。

于 2013-02-06T07:00:02.207 に答える
0

それが参照しているとは思いません...「LENGTH」という列名のクエリを実行しているようです...これは、文字列の長さを決定するための予約キーワードであり、エラー。このような列名の参照はありますか?

于 2013-02-06T02:36:19.873 に答える