我正在尝试在验证 View 模型的同一阶段验证用户名,其余的验证工作正常,但是我正在尝试使用以下代码段来检查用户名是否已被使用:// 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”的 Controller ,该 Controller 包含以下内容: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>在您的网络配置文件中,您有: <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)更重要的是,在您第一次单击提交之前,删除验证不会触发。您需要将之前的文本包含在带有提交按钮的 中,以便能够验证用户名。它不会自 Action 为 Regex、Required 或 StringLength。我认为这可以避免请求服务器,直到用户确定这是他想要的用户名。关于c# - MVC5 ViewModel 验证远程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37355360/
10-12 12:36
查看更多