【发布时间】:2017-07-04 19:28:03
【问题描述】:
我最近在我的表单中实现了远程验证:
视图模型:
[Remote("IsTagUnique", "myController", "myArea", ErrorMessage = "This tag already exists.")]
public string tag { get; set; }
控制器:
public ActionResult IsTagUnique(string tag)
{
using (db)
{
try
{
var myTag = db.ASAuftraege.Single(m => m.tag == tag);
return Json(false, JsonRequestBehavior.AllowGet);
}
}
catch (Exception)
{
return Json(true, JsonRequestBehavior.AllowGet);
}
}
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult myView(string Send){
// doSomething
}
视图(称为“myView”)
@Html.TextBoxFor(m => m.tag) @Html.ValidationMessageFor(m => m.tag)
<button class="form-button-submit" type="submit" name="Send" value="Send">Send</button>
验证工作得很好。
问题是:当我单击发送按钮而不手动触发标记字段上的验证一次时,单击字段然后单击其他位置,“IsTagUnique”函数在 myView() 函数之前执行。这导致我的提交输入(我实际上有多个发送按钮,就像视图中显示的那个(当然不同的名称/值)为空。知道我能做什么吗?我尝试通过手动触发验证聚焦和模糊标记字段,并通过触发更改事件。但不会触发验证。
【问题讨论】:
标签: model-view-controller unobtrusive-javascript remote-validation