Validation 使用基于远程属性的验证时必须双重提交

Validation 使用基于远程属性的验证时必须双重提交,validation,asp.net-mvc-3,hidden-field,Validation,Asp.net Mvc 3,Hidden Field,我们的模型上有一个字段,它具有[Remote]属性。当我们将该字段存储在一个隐藏的表单元素上,然后尝试提交该表单时,我们必须单击提交按钮两次。同样有趣的是,我们第二次点击它时,没有发生远程验证(Fiddler如是说) 想法?无法重新编程。如果隐藏字段用Remote属性修饰,则无论您在远程函数发送false时单击submit按钮多少次,您都将无法提交表单 例如: 型号: public class MyViewModel { [HiddenInput(DisplayValue = false

我们的模型上有一个字段,它具有[Remote]属性。当我们将该字段存储在一个隐藏的表单元素上,然后尝试提交该表单时,我们必须单击提交按钮两次。同样有趣的是,我们第二次点击它时,没有发生远程验证(Fiddler如是说)


想法?

无法重新编程。如果隐藏字段用Remote属性修饰,则无论您在远程函数发送
false
时单击submit按钮多少次,您都将无法提交表单

例如:

型号:

public class MyViewModel
{
    [HiddenInput(DisplayValue = false)]
    [Remote("Check", "Home")]
    public string Id { get; set; }

    [Required]
    public string Name { get; set; }
}
控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new MyViewModel
        {
            Id = "1"
        });
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        return View(model);
    }

    public ActionResult Check(string Id)
    {
        return Json(Id == "2", JsonRequestBehavior.AllowGet);
    }
}
视图:

@model AppName.Models.MyViewModel
@使用(Html.BeginForm())
{
@Html.EditorForModel()
}

由于远程函数将始终返回false,因此无法提交此表单。如果远程函数返回true,则只要单击一次就足以提交该函数,当然前提是其他验证已通过。

我们实际上使用的是Html.HiddenFor,而不是使用该属性。我来看看。你找到解决办法了吗?我也有同样的问题,即使我使用TextBoxFor而不是HiddenFor使hiddenfield可见。遗憾的是,我们没有。我想我们在这一领域转向了手动Ajax验证。那一刻代码中是否也有敲除?因为我认为这与我这边的问题有关。
@model AppName.Models.MyViewModel

<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>

@using (Html.BeginForm())
{
    @Html.EditorForModel()
    <input type="submit" value="OK" />
}