我有一个ASP.NET MVC3解决方案。我使用远程验证来检查用户名是否已经存在。
在第一阶段,我使用以下验证属性:
[Required, Remote("UserNameAlreadyExists", "User", Error="Already exists!"]
public string UserName { get; set; }
以下是运行时的跟踪:
然后我意识到我需要传递额外的字段(userID)来验证,因此我做了:
[Required, Remote("UserNameAlreadyExists", "User", AdditionalFields="UserID", Error="Already exists!"]
public string UserName { get; set; }
以下是运行时的跟踪:
你会看到还有一个POST?!
为什么呢?在我的情况下,这是一个问题。这让我很疯狂。
感谢您的帮助。
更新
以下是我的Edit.cshtml
的代码@using (Html.BeginForm())
{
@Html.HiddenFor(m => m.UserID)
@Html.LabelFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName)
...
<input type="submit" value="Submit">
}
这是javascript代码
$('form', dialog).submit(function () {
// Do not submit if the form does
// not pass client side validation
if (!$(this).valid()) {
writeError("Validation failed!");
return false;
}
// On the line below: I retrieve the POST url + serialize all submitted data from my form
$.post($(this).attr('action'), $(this).serialize(), function (data, status) {
...
...
}).error(function (error, status, a, b) {
alert('Error!');
});
// Unbind form submitting
$('form', dialog).unbind();
return false;
});
当我调试我的代码(一步一步)时,我可以注意到一些观点:
我不知道问题是否在我的代码中,或者我的jquery.validate.min.js版本是否已过时且有问题或其他原因......
我注意到如果我不使用任何AdditionalFields,我没有任何问题!!
我还注意到,如果我触发UserAlreadyExists volontary(通过焦点在字段中)我在提交(发布)时没有任何问题!
所以当显示Edit表单并且UserName字段没有聚焦时,我遇到了问题!然后我提交并出现问题
感谢。