gpt4 book ai didi

c# - 仅具有服务器端验证的 CustomValidator

转载 作者:行者123 更新时间:2023-11-30 12:36:27 25 4
gpt4 key购买 nike

我有以下问题:

Page 上有很多验证器,除了一个之外,所有验证器都同时具有客户端和服务器端验证。其中之一只有服务器端验证。

问题:

我的页面正在发布,即使某些客户端验证无效。我认为它应该首先验证客户端,当一切正常时,它应该检查服务器端。

代码:

Js部分:

        var hash = {
'.jpg' : 1,
'.jpeg' : 1,
'.bmp' : 1,
'.png' : 1
};
function FileExtension(obj, args) {
var file = '<%=UploadFoto_FileUpload.ClientID %>';
var re = /\..+$/i;
var ext = $("#" + file).val().match(re);
if (ext != undefined) {
ext = ext.toLowerCase();
if (hash[ext]) {
args.IsValid = true;
} else {
args.IsValid = false;
}
}
else {
args.IsValid = false;
}
}
function Validator2(obj, args){
args.IsValid = true;
}

asp.net部分:

                <asp:CustomValidator ID="UploadFoto_FileUpload_CustomValidator1" ErrorMessage="Ext error" ClientValidationFunction="FileExtension" OnServerValidate="UploadFoto_FileUpload_CustomValidator1_ServerValidate" Display="Dynamic" runat="server" />
<asp:CustomValidator ID="UploadFoto_FileUpload_CustomValidator2" ErrorMessage="De foto is te groot (maximaal 6mb)" ClientValidationFunction="Validator2" OnServerValidate="UploadFoto_FileUpload_CustomValidator2_ServerValidate" Display="Dynamic" runat="server" />

<asp:FileUpload ID="UploadFoto_FileUpload" CssClass="uploadField" runat="server" />

<asp:ImageButton ID="Submit_ImageButton" ImageUrl="../Images/btn-verzenden.png" AlternateText="Verzenden" CssClass="verzendenBtn" OnClick="Submit_ImageButton_Click" runat="server" />

经过一些进一步的测试,我发现即使只有第一个 - UploadFoto_FileUpload_CustomValidator1 也会出现相同的情况:

当上传字段为空时,会显示 Ext 错误,页面无法发布

选择文件但ext是错误的,则显示EXT错误,并且页面未发布

选择具有正确ext的文件时,则未显示错误消息,但即使还有其他带有错误的验证器

也正在发布表单。

最佳答案

我相信验证会触发所有验证器 - 这样您就不会得到烦人的用户体验,即弄清楚下一个错误/必填字段。

假设您无法编写有意义的客户端脚本,只需伪造它并返回它在客户端有效即可。您的服务器端逻辑将检查实际规则,但如果其他一些验证器失败,则拥有客户端代码将阻止它回发。

关于c# - 仅具有服务器端验证的 CustomValidator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3235529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com