我有两个验证组:父母和孩子
我有一个添加按钮,只需要验证子验证组,这很容易完成.保存按钮需要针对父和子验证组(客户端和服务器端)进行验证.我想我知道如何通过为每个组调用Page.Validate("groupname")方法来实现服务器端,但是如何在客户端完成?
这是我正在使用的代码:
<telerik:RadTextBox ID="txtTitre" runat="server" Skin="Windows7" Width="250">
</telerik:RadTextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*"
ForeColor="Red" ControlToValidate="txtTitre" ValidationGroup="validationincident"></asp:RequiredFieldValidator>
Run Code Online (Sandbox Code Playgroud)
我的ASP按钮:
<asp:Button ID="Button1" runat="server" Text="Soumettre ce ticket" OnClick="Button1_Click"
OnClientClick="CloseDialog()" UseSubmitBehavior="false" ValidationGroup="validationincident" />
Run Code Online (Sandbox Code Playgroud)
我的问题是,在我的OnClientClick中调用的JS函数关闭我的窗口之前,似乎在ValidationGroup之前触发了OnClientClick.
因此窗口关闭,只有当我重新打开窗口时才会显示"*"(错误消息).
我需要先检查我的ValidationGroup!在此先感谢您的帮助
我们正试图让JQuery validate插件在我们的网站上运行,但我们偶然发现了一个问题.
在我们的网站上,我们在每个页面上都有一个可供用户使用的登录表单,我们希望使用该插件来验证用户是否输入了用户名和密码.
我们还有一些页面显示了一些我们也想使用validate插件验证的表单.
我们看到的问题是没有办法将用户名和密码文本框分组到登录按钮,而将其他表单中的所有文本框和内容分组到该表单的提交按钮.如果我们使用ASP.NET验证器,我们将使用ValidationGroup属性,但我还没有找到一个很好的解决方案.
这是我的标记:
Name:
<asp:TextBox ID="txtNewName" runat="server" ValidationGroup="NewDepartmentValidationGroup" />
<asp:RequiredFieldValidator ID="vldtxtNewName" runat="server" ControlToValidate="txtNewName"
ErrorMessage="Required Field" /><br />
Description:
<asp:TextBox ID="txtNewDescription" runat="server"
ValidationGroup="NewDepartmentValidationGroup"/>
<asp:RequiredFieldValidator ID="vldtxtNewDescription" runat="server"
ControlToValidate="txtNewDescription" ErrorMessage="Required Field" /><br />
<asp:Button ID="cmdCreate" runat="server" Text="Create"
ValidationGroup="NewDepartmentValidationGroup" OnClick="cmdCreate_Click" />
Run Code Online (Sandbox Code Playgroud)
当我删除ValidationGroup属性时,行为是预期的,客户端代码警告该字段是必需的.
但是当我指定ValidationGroup(如上例中所示)并且单击文本框为空的按钮时,客户端代码不执行任何操作,按钮单击事件触发,Page.IsValid等于true并且我的代码继续执行,与预期的是什么.
任何想法如何解决这一问题?
我正在尝试在Spring应用程序中进行嵌套验证。
public class Parent{
public interface MyGroup{}
@NotNull(groups = MyGroup.class)
private Child child;
// getters and setters omited
}
public class Child{
public interface OptionalGroup {}
@NotBlank(groups = OptionalGroup.class)
private String aField;
}
Run Code Online (Sandbox Code Playgroud)
我已经从javax.validation包中查看了@Valid,但它不支持组。我还检查了spring的@Validated注解,但无法将其应用于字段。
我想做这样的事情:
public class Parent{
public interface MyGroup{}
@NotNull(groups = MyGroup.class)
@CascadeValidate(groups = MyGroup.class, cascadeGroups = OptionalGroup.class)
// 'groups' correspond to parent group and 'cascadeGroups' to a group that needs to be apply to the Child field.
private Child child;
}
Run Code Online (Sandbox Code Playgroud)
然后,我可以在任何想要的地方进行务实的操作:
@Inject SmartValidator validator;
public void …
Run Code Online (Sandbox Code Playgroud) 我正在尝试替换 ASP.NET 中的 JavaScript onclick 事件处理程序,该处理程序在使用验证控件时添加到按钮控件。这是在这种情况下从 ASP.NET 输出到 HTML 中的内容:
<input type="image" name="ibSubmit1" id="ibSubmit1" src="button-green-submit.gif" onclick="showProgress1();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ibSubmit1", "", true, "Group1", "", false, false))" style="border-width:0px;" />
Run Code Online (Sandbox Code Playgroud)
我仔细查看了,不幸的是,在将函数服务器端注入到页面之前,似乎没有办法修改它。
由于我正在开发一个控件并希望它是非侵入性和自包含的,并且我有兴趣获取WebForm_PostBackOptions 对象的validationGroup参数,因此似乎最简单的解决方案是使用 JavaScript 将 WebForm_DoPostBackWithOptions 函数名称替换为我的自定义包装函数并保留所有其余参数信息不变 - 然后我可以提取我感兴趣的信息,调用我的自定义函数,然后将调用转发到 WebForm_DoPostBackWithOptions。
注意:我使用 jQuery 来构建自定义函数,因此如果有更简单的方法使用 jQuery 来实现此操作,我会考虑这个选项。
这是我尝试替换 onclick 事件处理程序的代码(不起作用):
$('[onclick*=WebForm_DoPostBackWithOptions]').each(function() {
var txt = this.onclick;
txt = txt + '';
txt = txt.replace('WebForm_DoPostBackWithOptions','ml_DoPostBackWithOptions');
this.onclick = eval(txt);
});
Run Code Online (Sandbox Code Playgroud)
使用alert(),我验证了文本是否已正确更改,但是无论我是否使用eval() 函数,onclick 处理程序似乎都无法将其识别为JavaScript。
我想过使用正则表达式来获取validationGroup值,但这似乎如果我能让它工作的话它会更加优雅和灵活......
注意:如果我的控件有一种方法可以询问它所在的页面,以找到将回发的所有按钮(无论它们是什么类型的按钮),以便我可以检索服务器端的属性,这也是我会考虑的。