触发不显眼的验证,但阻止在mvc4表单上提交

时间:2013-10-08 19:00:15

标签: javascript asp.net-mvc-4 unobtrusive-validation

我有一个表单,这个表单有一些必需的值,所以在我的viewmodel中我有一些东西:

[Required(ErrorMessageResourceType = typeof(Res_Errors), ErrorMessageResourceName = "errorPacienteNoSeleccionado")]
public int? scheduledIdPersonaSeleccionada { get; set; }

以及提交按钮,但我不想将表单提交给服务器,如果我的验证通过,我只需要执行jquery函数。

验证工作正常,但我不知道如何阻止表单发布,而是调用我的函数。

2 个答案:

答案 0 :(得分:1)

如果您只想在表单提交上执行javascript(而不是实际上发送信息),请查看@Ajax.BeginForm

@using (Ajax.BeginForm(new AjaxOptions { OnBegin = "MyFunction" }))
{
    @Html.EditorFor(x => x.scheduledIdPersonaSeleccionado)
    <input type="submit" value="Presentar" />
}

或者你可以挂钩到提交事件并自己动手:

$('form').submit(function(){
  if ($(this).valid()) { // validation passed
    // cal your jquery function here
  }
});

答案 1 :(得分:0)

将提交按钮更改为按钮类型。验证将调用,但提交赢了

<form>
    @Html.EditorFor(x => x.scheduledIdPersonaSeleccionado)
    @Html.ValidationMessageFor(x=>x.scheduledIdPersonaSeleccionado)
    <input type="button" value="Presentar" onclick="DoSomething();" />
</form>