Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在MVC4中执行远程验证而不使用实体框架_C#_Asp.net Mvc_Validation_Asp.net Mvc 4 - Fatal编程技术网

C# 如何在MVC4中执行远程验证而不使用实体框架

C# 如何在MVC4中执行远程验证而不使用实体框架,c#,asp.net-mvc,validation,asp.net-mvc-4,C#,Asp.net Mvc,Validation,Asp.net Mvc 4,我已经用MVC开发了一个没有实体框架的web应用程序。在我的应用程序中,我想执行远程验证来检查用户名是否已经存在。在大多数博客中,他们使用实体框架数据模型来实现这一点,而我希望使用sql命令来实现这一点。然而,我无法实现预期的验证 这是我的密码: 模型、控制器、视图代码 模式: 控制器: [HttpGet] public ActionResult RemoteValidation() { return View(); } [HttpPost]

我已经用MVC开发了一个没有实体框架的web应用程序。在我的应用程序中,我想执行远程验证来检查用户名是否已经存在。在大多数博客中,他们使用实体框架数据模型来实现这一点,而我希望使用sql命令来实现这一点。然而,我无法实现预期的验证

这是我的密码: 模型、控制器、视图代码

模式:

控制器:

 [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); 
    }
视图:


@使用(Html.BeginForm())
{
@Html.TextBoxFor(m=>m.UserName)
@Html.ValidationMessageFor(x=>x.UserName)
@Html.PasswordFor(m=>m.Password)
@Html.ValidationMessageFor(x=>x.Password)
}


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

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

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

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


请查看参数化查询和SQLCommand-永远不要在网站中手动生成SQL字符串-它会让您面临SQL注入攻击。

除了您自己暴露的事实之外,您还有什么问题?您是否包含客户端验证的相关脚本?您正在点击控制器方法吗?是的,我在视图中包含用于客户端验证的脚本文件,但我无法获取validation消息..以及modelstate.isvalid获取true!您是否点击了
ValidateUserName()
方法?并且
ModelState
将始终为真-
RemoteAttribute
仅为客户端验证,您的属性上没有其他验证属性无需如何获取?
@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>
<appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>