我们的模型上有一个具有 [Remote] 属性的字段。当我们将该字段存储在一个隐藏的表单元素上,然后尝试提交该表单时,我们必须单击提交按钮两次。同样有趣的是,我们第二次单击它时没有发生远程验证(Fiddler 说)。
想法?
我们的模型上有一个具有 [Remote] 属性的字段。当我们将该字段存储在一个隐藏的表单元素上,然后尝试提交该表单时,我们必须单击提交按钮两次。同样有趣的是,我们第二次单击它时没有发生远程验证(Fiddler 说)。
想法?
无法重现。如果隐藏字段装饰有 Remote 属性,如果远程功能发送,无论您单击提交按钮多少次,您都无法提交表单false
。
例如:
模型:
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
<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" />
}
因为远程函数将始终返回 false,所以无法提交此表单。如果远程函数返回 true,则单击一次就足以提交它,当然假设其他验证已通过。