如何在不使用实体框架的情况下在MVC4中执行远程验证

时间:2017-09-12 07:32:12

标签: c# asp.net-mvc validation asp.net-mvc-4

我使用没有实体框架的MVC开发了一个Web应用程序。在我的应用程序中,我想执行远程验证以检查用户名是否已存在。我阅读了很多关于远程验证的博客。在大多数博客中,他们使用实体框架数据模型来执行此操作,而我希望使用sql命令。但是,我无法实现所需的验证。

这是我的代码: 模型,控制器,查看代码。

模式:

public class RemoteValidation
{

    [Remote("ValidateUserName","Test",ErrorMessage="UserName Already Exist")]
    public string UserName { get; set; }

    public string Password { get; set; }

}

控制器:

 [HttpGet]
    public ActionResult RemoteValidation()
    {
        return View();
    }

    [HttpPost]
    public ActionResult RemoteValidation(RemoteValidation rv)
    {
        if (ModelState.IsValid)
        {
            SqlConnection conn = new SqlConnection(connString);

            conn.Open();

            SqlCommand cmd = new SqlCommand("Insert into AdminSignup (UserName,Password) Values ('"+rv.UserName+"','"+rv.Password+"')", conn);

            cmd.ExecuteNonQuery();

            conn.Close();
        }

        return View();
    }



    public JsonResult ValidateUserName(string UserName)
    {
        SqlConnection conn = new SqlConnection(connString);

        SqlCommand cmd = new SqlCommand("Select*from AdminSignup Where UserName='"+UserName+"'", conn);

        conn.Open();

        SqlDataReader dr = cmd.ExecuteReader();

        while (dr.Read())
        {
            if (dr.HasRows == true)
            {
                return Json("User Name Already Exist", JsonRequestBehavior.AllowGet);  
            }
        }

        return Json(true, JsonRequestBehavior.AllowGet); 
    }

查看:

@model TestMvc.Models.RemoteValidation

<body>

    @using (Html.BeginForm())
    {
        <div>
            @Html.TextBoxFor(m=>m.UserName)
            @Html.ValidationMessageFor(x=>x.UserName)

        </div>

        <div>
            @Html.PasswordFor(m=>m.Password)
            @Html.ValidationMessageFor(x=>x.Password)
        </div>        
            <div>
                <input type="submit" value="Check" />
            </div>
    }
</body>

我不知道为什么我无法获得输出任何人请帮助我并建议如何实现这一点..

1 个答案:

答案 0 :(得分:0)

您是否已将web.config配置为启用验证?

<appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

使用浏览器开发人员工具查看生成的HTTP流量。

请查看参数化查询和SQLCommand - 永远不要在网站中手工构建SQL字符串 - 它会打开SQL注入攻击。