我正在尝试将MVC 4添加到现成的成员资格中。

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,但看不到连接。似乎是一个如此简单的错误。 DB设置为Nvarchar(MAX),以尝试避免此错误。

Invalid column name 'Length'

最佳答案

在您的评论中,似乎您使用了

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


如果您查看msdn

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


propertyValues在哪里


  属性值
      类型:System.Object
      (可选)包含其他用户属性的字典。默认为空。


因此,在使用该方法时,会将model.Mobile作为propertyValues参数发送,但肯定不是!

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

关于c# - 无效的列名“长度”已编辑MVC 4成员资格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14720506/

10-10 16:45