c# – MVC5 ViewModel验证远程

我试图在验证视图模型的同一阶段验证用户名,其余的验证工作正常,但我正在尝试使用以下代码片段来检查用户名是否已被使用:

// Cut down code to keep it simple.
public class UserAccountRegistration
{
    [Remote("CheckUsername", "Validation", ErrorMessage = "Username already exists.")]
    public string Username { get; set; }
}

我在Controllers目录中有一个名为“ValidationController.cs”的控制器,该控制器包含以下内容:

using System;
using System.Web.Mvc;
using Test.Helpers;
using System.Data.SqlClient;
using System.Data;

namespace Test.Controllers
{
    public class ValidationController : Controller
    {
    // GET: Validation
    public ActionResult Index()
    {
        return View();
    }

    [HttpGet]
    public JsonResult CheckUsername(string Username)
    {
        Encryption hlpEncryption = new Encryption();
        DataConnections hlpDBConn = new DataConnections();

        bool bUsernameAlreadyExists = false;
        string sEncUsername = hlpEncryption.Encrypt(p_sUsername);

        SqlConnection conn = hlpDBConn.DBConnection();

        using (SqlCommand cmd = new SqlCommand("CheckIfUsernameExists", conn) { CommandType = CommandType.StoredProcedure })
        {
            cmd.Parameters.AddWithValue("@Username", sEncUsername);

            conn.Open();
            bUsernameAlreadyExists = (Convert.ToInt16(cmd.ExecuteScalar()) > 0);
            conn.Close();
        }

        return Json(bUsernameAlreadyExists, JsonRequestBehavior.AllowGet);
    }
}

}

然而,CheckUsername方法甚至没有被击中,我做错了什么?

谢谢.

让我们仔细检查一下:

您已在布局(最好)中按顺序正确引用了以下库:

    <script src="~/Scripts/jquery-2.2.3.min.js"></script>    
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

在您的Web配置文件中,您有:

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

在你看来像:

  @Html.LabelFor(m => m.Username)
  @Html.TextBoxFor(m => m.Username)
  @Html.ValidationMessageFor(m => m.Username)

更重要的是,在您第一次单击提交之前,删除验证不会触发.您需要在<中包含先前的文本.形式>使用提交按钮可以验证用户名.它不会自动为Regex,Required或StringLength.我认为这样可以避免请求服务器,直到用户确定是他想要的用户名.

https://stackoverflow.com/questions/37355360/mvc5-viewmodel-validation-remote

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – MVC5 ViewModel验证远程