Local testing environment: ASP. net mvc 4.0 ,. net framework 4.0, VS 2012, which comes with jquery in the current environment. validate. unobtrusive. js demo BUG: MODEL class: [csharp] public class LoginModel {[Required] [Remote ("ValidateCCID", "Login", AdditionalFields = "IsStudent")] public string CCID {get; set;} [csharp] view plaincopypublic bool IsStudent {get; set;} VIEW: [html] @ using (Html. beginForm ("LoginSHTracker", "Login", forw.hod. post) {@ Html. antiForg EryToken () @ Html. validationSummary (true) CampusConnect ID: <label> @ Html. editorFor (m => m. campusConnectID) @ Html. validationMessageFor (m => m. campusConnectID) </label> <br/> <input type = "submit" value = "Login"/> @ Html. editorFor (m => m. isStudent) This is not selected by default, that is, the final result of the test should be false Student} CONTROLLER: [csharp] public class LoginController: Controller {[OutputCache (Location = OutputCacheLocation. None, NoStore = true)] public JsonResult ValidateCCID (string CCID, bool IsStudent) {here the value of IsStudent is actually true ...} [HttpPost] public ActionResult LoginSHTracker (LoginModel model) {here model. the IsStudent value is actually false ...}} the expected result is false, but the IsStudent value passed by REMOTE verification is true. The following describes the causes and solutions: jquery. validate. the method for getting IsStudent in unobtrusive is as follows: $ (options. form ). find (": input [name = '" + escapeAttributeValue (paramName) + "']"). val () for simple testing, $ ("form "). find (": input [name = 'isstudent ']"). val () @ Html. editorFor (m => m. the generated HTML code is as follows: <input class = "check-box" data-val = "true" data-val-required = "The IsStudent field is required. "id =" IsStudent "name =" IsStudent "type =" checkbox "value =" true" /> <Input name = "IsStudent" type = "hidden" value = "false"/> the problem lies in the HTML code. The two HTML elements are named IsStudent. The type of the first element is checkbox and the value is true. The type of the second element is den and the value is false. $ ("Form "). find (": input [name = 'isstudent ']"). the val () statement first finds two input elements whose name is IsStudent, and val () takes the first value. Therefore, the value of $ ("form"). find (": input [name = 'isstudent ']"). val () is true. Www.2cto.com, however, the checkbox option is not selected. Therefore, after the POST element whose name is IsStudent submits the form, the server obtains only the value of hidden, that is, false. (Briefly mention the reason why EditorFor in ASP. net mvc generates this HTML segment. When using the checkbox, the unselected checkbox obtains NULL on the server, that is, it cannot be obtained. Therefore, when the bool value checkbox is not selected, only the value of hidden with the same name is obtained in the background, false. If this checkbox is selected, the background obtains two values at the same time, namely "true, false ". When ASP. net mvc is bound to a MODEL, the first value is true .) The difference between the two values makes the BUG of using REMOTE to verify AdditionalFields. There are multiple solutions, one of which is very simple: <input type = "checkbox" name = "IsStudent" onclick = "if (this. checked = true) {this. value = 'true';} else {this. value = 'false';} "value =" false "/> directly write HTML instead of ASP. net mvc EditorFor, and set value = "false ". Then add the click method onclick = "if (this. checked = true) {this. value = 'true';} else {this. value = 'false';} Of course, you can also modify jquery. validate. unobtrusive. js to avoid this problem. Maybe jquery. validate. unobtrusive. js will be improved in the new ASP. net mvc version.