【问题标题】:Invalid column name 'Length' webmatrix列名“长度”网络矩阵无效
【发布时间】:2015-10-14 03:58:08
【问题描述】:

我是 asp.net mvc 的新手。我看了一个教程,他正在使用 webmatrix。我试图在由 webmatrix 创建的数据库中的表“UserProfile”中添加名为“IDViewer”的列。但是,当我尝试插入一些值时,它返回“无效列名'长度'”的错误。但我没有在我的代码中声明列名“长度”。请检查我的代码和图像。谢谢

图片链接在这里。请看一下

The error

My database, i added column named IDViewer

public class Register
{
    [Required(ErrorMessage = "Please provide password", AllowEmptyStrings = false)]
    public string Username { get; set; }
    [Required(ErrorMessage = "Please provide password", AllowEmptyStrings = false)]
    [DataType(System.ComponentModel.DataAnnotations.DataType.Password)]
    [StringLength(50, MinimumLength = 8, ErrorMessage = "Password must be 8 char long.")]
    public string Password { get; set; }
    public string IDViewer { get; set; }
}

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary("", new { @style = "color: red" })
    <label>Username</label>
    @Html.TextBoxFor(m => m.Username, new { @class = "form-control" })
    <label>Password</label>
    @Html.PasswordFor(m => m.Password, new { @class = "form-control" })
    <label>Student ID</label>
    @Html.TextBoxFor(m => m.IDViewer, new { @class = "form-control" })
    @Html.DropDownList("role",roles,"Select Account Type")
    <button class="btn btn-primary">Register</button>
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Register(Register registerdata, string role)
{
    if(ModelState.IsValid)
    {
        try
        {
            WebSecurity.CreateUserAndAccount(registerdata.Username, registerdata.Password, registerdata.IDViewer);
            Roles.AddUserToRole(registerdata.Username,role);
            return RedirectToAction("Index", "Home");
        }
        catch (MembershipCreateUserException)
        {
            ModelState.AddModelError("", "Sorry the username already exists");    
            return View(registerdata);
        }
    }
    ModelState.AddModelError("","Data invalid");
    return View(registerdata);
}

【问题讨论】:

  • 第三个参数需要是字典。尝试用new { IDViewer = registerdata.IDViewer }替换registerdata.IDViewer

标签: c# asp.net-mvc razor webmatrix


【解决方案1】:

documentation开始,第三个参数是字典

属性值

类型:System.Object

(可选)包含附加用户属性的字典。默认为空。

所以你的方法需要

WebSecurity.CreateUserAndAccount(registerdata.Username,
    registerdata.Password, new { IDViewer = registerdata.IDViewer });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多