如果mvc中存在模型状态错误,如何禁用文本框?

时间:2012-06-12 19:00:49

标签: asp.net-mvc asp.net-mvc-3 modelstate

我正在做一些可能会失败的服务器(不太可能),但可能会出错。我想阻止用户继续前进,所以我想禁用输入,以便他们必须刷新页面。如何根据ModelState错误禁用它。如果存在任何错误,请禁用此框,我只想在最初加载页面时执行此操作。我的问题不一定是如何做到的,而是更多的标准和最佳方式。我可以拥有一个ViewBag,它可以禁用它,但不确定这是否是最佳路径,是否有任何建议?

2 个答案:

答案 0 :(得分:3)

假设你有一个POST控制器动作做了一些处理,如果它失败了,那么它会给ModelState增加错误。现在在视图中你可以:

@Html.TextBoxFor(
    x => x.SomeProperty, 
    !ViewData.ModelState.IsValid ? new { @readonly = "readonly" } : null
)

或者编写一个自定义帮助程序来完成工作并为您简化:

@Html.MyTextBoxFor(x => x.SomeProperty)

如果您需要多个输入字段的此行为,则可能很有用。

答案 1 :(得分:0)

您可以通过jquery找出表单是否有效:

if($('form').valid()){

}