验证htm属性失败后返回编辑视图

时间:2012-11-19 08:14:24

标签: jquery asp.net-mvc validation

我有一个简单的视图,用于编辑一些基本信息。如果不需要数据,则它们是“NA”复选框。

   @Html.TextBoxFor(m => m.PersonInfo[i].Reference, "Enter a reference", new { disabled = Model.PersonInfo[i].NotApplicable }) 

   @Html.CheckBoxFor(m => m.PersonInfo[i].NotApplicable, new
       {
           onclick = "ChangeEnabledState(" + i + ");"

       })

当用户单击NA复选框时,它会调用一个禁用该人的所有控件的javascript函数。

我遇到以下情况的问题:

  1. 用户创建新的“人员信息”并将其设置为NA(因此所有字段都被禁用)
  2. 用户然后返回编辑视图,取消选中复选框(启用视图)
  3. 用户在其中一个texbox中输入了一些无效数据
  4. 用户点击保存,验证失败,错误被添加到模型
  5. 由于禁用的文本框是根据模型设置的,因此会禁用它们,但会选中复选框。因此,用户必须单击两次复选框才能重新启用它们。
  6. 是否有一种更新viewmodel的简洁方法,因此在上述方案中不会禁用这些字段。我已经尝试了一个jquery document.ready来检查checbox并启用/禁用,但觉得必须有一个更优雅的解决方案。

1 个答案:

答案 0 :(得分:0)

如果使用Ajax表单,则会有一个名为AjaxOptions的参数。对于AjaxOptions,您可以定义OnBegin,OnSucces,OnComplete,OnSucces,OnFailure。

在这里,您可以传入一个javascript函数,该函数在请求开始时或完成时调用,或者在您的问题中验证失败时调用。

@using (Ajax.BeginForm("MethodName", "ControllerName", new AjaxOptions { OnFailure="EnableForm()" })