如何从视图中有条件地显示所需的字段验证

时间:2013-06-14 11:09:27

标签: asp.net-mvc asp.net-mvc-4 razor html-helper

在我的MVC 4应用程序中,我有一个多选列表框,我可以在其中选择多个值,我还有一个项目新角色作为列表之一items,也指模型属性 NewRole

因此,只要用户选择包含New Role,就会使用Jquery,我将向用户提供一个文本框,该文本框从给定的模型绑定到NewRole,

@Html.TextBoxFor(m => m.NewRole) 

其中还有以下评估字段。

@Html.ValidationMessageFor(m => m.NewRole)

如果用户选择的选项没有项目新角色,我将隐藏此文本框。

现在问题是,即使我隐藏包含文本框的div,它也会尝试评估所需的字段验证。

我需要的是当用户选择新角色并且用户未在提供的文本框中输入任何内容然后验证所需的字段属性。

我知道我可以写一个JQuery来显示一个警告,当div可见并且没有任何价值。但是我想要在这种情况下进行默认验证。

有可能吗?

3 个答案:

答案 0 :(得分:1)

是的,可以使用RemoteAttribute。看看这篇文章:

http://msdn.microsoft.com/en-us/library/gg508808(v=vs.98).aspx

请记住,这不是客户端验证,这意味着发生了实际的服务器帖子。

答案 1 :(得分:1)

有条件地对某些客户端进行验证的诀窍之一......您可以使用验证的IGNORE属性......

jQuery Validate Ignore elements with style

$("#myform").validate({
   ignore: ":hidden"
});

如果这不是您所期待的......我将提供更具体的信息

答案 2 :(得分:1)

尝试使用规则添加和删除,当选择新角色时,添加新规则,验证其他选择上的文本框,从文本框中删除规则并隐藏它,就像您正在做的那样:

http://validation.bassistance.de/rules/