编辑的列名称无效'Length' MVC 4 成员资格



我正在尝试向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' 

它实际上抛出了错误,因为它需要一个附加属性的字典-try:

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

这假设在UserProfileTable中有一个名为Mobile的列。如果您想指定不同的列名:

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

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

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

如果你看看msdn,

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

其中propertyValues是

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

因此,在使用该方法时,请建模。Mobile是作为propertyValues参数发送的,当然不是!

因此,您应该创建自己的CreateUserAndAccount重载(或一种新方法),在其中可以使用mobile参数。

我不认为这是它所指的…它似乎在查询一个名为"LENGTH"的列名称。。。我怀疑这是一个用于确定字符串长度的保留关键字,并导致您的错误。你有这样的列名参考吗?

相关内容

  • 没有找到相关文章

最新更新