使用附加字段进行远程验证>>还有一个帖子?

时间:2012-04-14 15:46:24

标签: asp.net-mvc jquery

我有一个ASP.NET MVC3解决方案。我使用远程验证来检查用户名是否已经存在。

在第一阶段,我使用以下验证属性:

[Required, Remote("UserNameAlreadyExists", "User", Error="Already exists!"]
public string UserName { get; set; }

以下是运行时的跟踪:

enter image description here

然后我意识到我需要传递额外的字段(userID)来验证,因此我做了:

[Required, Remote("UserNameAlreadyExists", "User", AdditionalFields="UserID", Error="Already exists!"]
public string UserName { get; set; }

以下是运行时的跟踪:

enter image description here

你会看到还有一个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函数
  • 提交并截获
  • 触发UserAlreadyExists(为什么?)。在这个函数中(在第二行)我有:var user = _requestServiceClient.GetUserFromUserName(userName);在这一行上,我突然步入编辑的后期行动。奇怪!?稍后一步,它退回到UserAlreadyExists函数中。还是很奇怪!?

我不知道问题是否在我的代码中,或者我的jquery.validate.min.js版本是否已过时且有问题或其他原因......

我注意到如果我不使用任何AdditionalFields,我没有任何问题!!

我还注意到,如果我触发UserAlreadyExists volontary(通过焦点在字段中)我在提交(发布)时没有任何问题!

所以当显示Edit表单并且UserName字段没有聚焦时,我遇到了问题!然后我提交并出现问题

感谢。

0 个答案:

没有答案