2

I am trying to add to the MVC 4 out of the box membership.

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

I changed the model

public class RegisterModel
{
    // Username and password methods

    public string Mobile { get; set; }
}

I also added it to the UserProfile Model. I am getting a SqlException and i just don't see the connection. It seems like such a simple error but. The DB is set to Nvarchar(MAX) which is to try to avoid this error.

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 (可选)包含其他用户属性的字典。默认值为空。

因此,随着您对该方法的使用,model.Mobile 作为propertyValues参数发送,当然不是!

CreateUserAndAccount因此,您应该在可以使用移动参数的地方创建自己的重载(或新方法)。

于 2013-02-06T07:00:02.207 回答
0

我不认为这就是它所指的......它似乎正在查询一个名为“LENGTH”的列名......我怀疑这是一个保留关键字,用于确定字符串的长度并导致你的错误。你有这样的列名引用吗?

于 2013-02-06T02:36:19.873 回答