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



我有一个简单的视图,用于编辑一些基本信息。如果不需要数据,则其为"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. 用户在其中一个文本框中输入了一些无效数据
  4. 用户单击"保存",验证失败,错误将添加到模型中
  5. 由于被禁用的文本框是根据模型设置的,因此它们被禁用,但复选框被选中。因此,用户必须单击复选框两次才能重新启用它们

是否有一种更新视图模型的干净方法,以便在上述场景中不会禁用字段。我已经尝试了jquery文档。准备检查复选框并启用/禁用,但我觉得必须有一个更优雅的解决方案。

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

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

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

最新更新