0

我有一个编辑表单,用户可以在其中禁用某些字段的 MVC 4 客户端验证。 我正在使用 jQuery 禁用客户端验证:

$("#CustomerOrderNumber").prop("disabled", true);

当表单首次呈现时,这工作正常。

我发回表单然后从控制器重新显示表单时出现问题,如下所示:

[HttpPost]
public ActionResult RegisterImei(ImeiCustOrderNumberModel model)
{
    return View(model);
}

因为当再次呈现表单时,已禁用的验证不再被禁用,并且该字段的不需要的客户端验证再次处于活动状态。

似乎这是由原始源标记决定的:

<input class="text-box single-line" data-val="true" data-val-required="The Customer Order Number field is required." id="CustomerOrderNumber" name="CustomerOrderNumber" type="text" value="SF1861-" />

关于在回发后再次呈现表单时如何保持禁用客户端验证的任何想法?

我制作了一个小示例应用程序来说明我的问题。如果用户禁用字段 B,则用户可以在不验证字段 B 的情况下回发模型。但是当页面再次呈现时,它忘记了字段 B 已禁用。并且字段 B 呈现不需要的客户端验证消息。我希望我的页面记住字段 B 已禁用并停止呈现客户端验证消息。Mvc4SampleApp.zip:http://sdrv.ms/14FUKa6 _

4

2 回答 2

1

我在这个线程中找到了问题的解决方案:

线程中答案的有趣部分之一是关于 ModelState 的问题,我从答案中引用:

“如果 FieldA 或 FieldB 的值为 null,尽管它在客户端验证中传递,则 ModelState.IsValidate 的状态将为假。所以我们应该重置我们不验证的那个字段的 ModelState。”

http://forums.asp.net/p/1934978/5507137.aspx?Re+How+to+keep+client+side+MVC+4+validation+disabled+when+a+form+is+rendered+again+后+后+后+

于 2013-09-12T13:56:51.793 回答
0

回发后,元素将失去其 disabled 属性,您必须在回发后重新将 prop("disabled", true) 应用于元素

或者你可以使用 <% Html.EnableClientValidation(false); %> 在字段之前?

于 2013-09-11T14:39:04.980 回答