GVKun编程网logo

c# – ASP.NET自定义验证器WebMethod jQuery(aspnet验证控件例子)

15

如果您想了解c#–ASP.NET自定义验证器WebMethodjQuery和aspnet验证控件例子的知识,那么本篇文章将是您的不二之选。我们将深入剖析c#–ASP.NET自定义验证器WebMetho

如果您想了解c# – ASP.NET自定义验证器WebMethod jQueryaspnet验证控件例子的知识,那么本篇文章将是您的不二之选。我们将深入剖析c# – ASP.NET自定义验证器WebMethod jQuery的各个方面,并为您解答aspnet验证控件例子的疑在这篇文章中,我们将为您介绍c# – ASP.NET自定义验证器WebMethod jQuery的相关知识,同时也会详细的解释aspnet验证控件例子的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

c# – ASP.NET自定义验证器WebMethod jQuery(aspnet验证控件例子)

c# – ASP.NET自定义验证器WebMethod jQuery(aspnet验证控件例子)

我正在尝试实现一个.NET自定义验证器,它使用$.ajax在同一页面上查询WebMethod并返回一个布尔值来指示结果是true还是false.

我使用的WebMethod非常简单

[WebMethod()]
public static bool IsPromovalid(string code)
{
    string promoCode = "ABCDEFG";
    bool result = code.ToLower() == promoCode.ToLower();
    return result;
}

CustomValidator看起来像这样

<asp:CustomValidator ID="cvPromoCode" display="None" ControlTovalidate="txtPromoCode" runat="server" ClientValidationFunction="validatePromo"
    ErrorMessage="The promo code you entered is incorrect" OnServerValidate="ValidatePromoCode" />

和简单的$.ajax()ClientValidation函数

function validatePromo(src,args) {
    $.ajax({
        type: "POST",url: "Register.aspx/IsPromovalid",data: "{'code': '" + args.Value + "'}",contentType: "application/json; charset=utf-8",dataType: "json",success: function (msg) {
            args.IsValid = msg.d;
        }
    });
}

问题是页面立即验证,实际上并没有等待ajax调用完成.如果页面上有任何其他错误,它会显示验证摘要,但从不显示自定义验证程序的错误消息.

我可以看到在Firebug中进行的AJAX调用,它会重新响应正确的响应(在这种情况下为true或false)

解决方法

简单的方法是将您的验证更改为:
function validatePromo(src,args) {
    var isValid;
    $.ajax({
        type: "POST",data: "{'code': '" + args + "'}",async: false,success: function (msg) {
             isValid = msg.d;
        }        
    });
    args.IsValid = isValid;
}

请特别注意async:false.你的第一次尝试不起作用的原因是,在验证脚本已经检查了args.IsValid之前,没有调用ajax成功回调.使用async:false,$.ajax调用将在成功回调完成后才会完成.

这个问题的一大问题是它现在“阻塞”任何js线程正在运行验证.在ASP.Net验证器的情况下,我不认为这是一个问题,但我会通过长时间运行的电话进行测试,以确保您没有搞任何人在慢速连接上的页面.

asp.net – WCF vs ASPX webmethods vs ASMX webmethods

asp.net – WCF vs ASPX webmethods vs ASMX webmethods

目的是创建一组人们可以重用的Web服务.这些服务主要与后端数据库交互,创建,检索和处理数据.

我们希望公开服务,以便人们可以使用它来创建数据mashup和其他应用程序.

最终用户是可以在我们的域内或域外的网页.对于域外的页面,我们计划发布可配置为retreive并显示数据的小部件.

一个要求 – 应用程序应该在其可以处理的用户数量方面具有极高的可扩展性.

我们的代码库是.net,我们正在研究ASPX webmethods(或ASHX),ASMX webmethods和WCF(开始阅读WCF).

在安全性/访问方面,我发现维护sessionid,会员资格在这三个方面都是可行的. WCF似乎有点复杂.当我们只能在aspx中使用web方法(略微调整)完成所有操作时,我无法立即看到asmx的值.

另外,假设使用ASP.NET MVC2,我也可以为这些web方法获得干净的URL.

问题

在性能和可扩展性方面哪一个最有效?
我应该选择WCF或ASMX的任何理由?

感谢您抽出时间阅读这篇文章,并为我刚接触.net的天真问题道歉.

编辑我有点明白WCF是要走的路.只是为了理解这些技术的发展,如果有人可以说明为什么aspx webmethod与asmx不同,当两者都能完成类似的事情(除了发现之外)之外,这将是一件好事.可以使aspx webmethods以其他格式(明文,json)返回数据.此外,我们似乎可以使用ashx构建restful服务.再次为天真的问题道歉.

解决方法

您应该使用WCF在.Net中开发Web服务. WCF具有高度可配置性,具有许多安全性,传输协议,序列化,扩展等选项. Raw performance也明显更高.此外,还在积极开发WCF,并在3.5和4版本中添加了许多新功能.还有一些变体,如WCF数据服务和WCF RIA服务. WCF 4.0还有更好的REST和JSON支持,您可以直接在ASP.Net / JQuery中使用它们.

asp.net – 使用jquery调用webmethod时始终获得“401 Unauthorized”错误

asp.net – 使用jquery调用webmethod时始终获得“401 Unauthorized”错误

我一直在努力让我的 jquery调用webmethod工作.我被服务器以“401 Unauthorized”响应退回.我必须在web.config或其他阻止成功调用的地方设置不正确.

非常感谢您的见解!

调用js函数调用jquery调用

button.OnClickAction = "PageMethod('TestWithParams',['a','value','b',2],'AjaxSucceeded','AjaxFailed'); return false;";

调用jquery的JavaScript函数

function PageMethod(fn,paramArray,successFn,errorFn) {
var pagePath = window.location.pathname;
var urlPath = pagePath + "/" + fn;

//Create list of parameters in the form:  
//{"paramName1":"paramValue1","paramName2":"paramValue2"}  
var paramList = '';
if (paramArray.length > 0) {
    for (var i = 0; i < paramArray.length; i += 2) {
        if (paramList.length > 0) paramList += ',';
        paramList += '"' + paramArray[i] + '":"' + paramArray[i + 1] + '"';
    }
}
paramList = '{' + paramList + '}';

//Call the page method
$.ajax({
    type: "POST",url: pagePath + "/" + fn,contentType: "application/json; charset=utf-8",data: paramList,timeout: 10000,dataType: "json",success: function(result) { alert('Overjoyed'); },error: function(result) { alert('No joy'); }
});
}

页面中的Web方法

public partial class WebLayout : System.Web.UI.Page
{

    [WebMethod()]
    public static int Testnoparams()
    {
        return 1;
    }

    [WebMethod()]
    public static string TestWithParams(string a,int b)
    {
        return a + b.ToString();
    }
...

在Firebug控制台中看到的响应

json: {"Message":"Authentication Failed.","StackTrace":null,"ExceptionType":"system.invalidOperationException"}

"NetworkError: 401 Unauthorized - http://localhost/Care-Provider-Home/Profile/Personal-Profile.aspx/TestWithParams" TestWithParams

我查看并阅读了关于这个主题的常用网站(Encosia等),但是有用.要么我错过了一个关键部分,要么我的环境的安全参数中存在一些阻止呼叫的微妙之处.

以下是一些可能影响您诊断的潜在有用信息:

>代码隐藏中的Web方法
>使用Sitecore CMS(似乎没有干涉,永远不知道)
> IIS7
> .NET 3.5
> jQuery 1.3.2

我期待着您的见解和指导 – 谢谢!

解决方法

是的,它确实起作用了!由于Sitecore CMS确实执行URL重写以生成友好的URL(它以层的形式组装页面,动态地,类似于Master Page概念),因此我发现它可能导致一些问题,最初导致401错误.我通过使用单个ASPX创建一个单独的项目来验证这一点 – 通过一些工作,我可以调用Web方法并使用jquery获取值.然后我在我的web根目录中创建了几乎相同的ASPX,但是在发出请求时告诉Sitecore忽略它(web.config中的IgnoreUrlPrefixes),经过一些工作我也能让它成功运行!谢谢你的帮助.

asp.net – 日历自定义验证器

asp.net – 日历自定义验证器

有人可以建议如何为Web窗体日历控件实现自定义验证器吗?显然,requiredValidator和CustomValidator都不能与Calendar控件一起使用.

Microsoft提供的一个解决方案是扩展日历:

How to extend a Web form control to work with the validation controls by using Visual C#

有没有更简单的解决方案?

解决方法

我终于以这种方式工作了:
<asp:Calendar ID="startCalendar" CssOnSelectionChanged="Selection_Changed" runat="server"></asp:Calendar>
<asp:CustomValidator ID="dateCustVal" OnServerValidate="DateCustVal_Validate" 
    runat="server"></asp:CustomValidator>

protected void DateCustVal_Validate(object source,ServerValidateEventArgs args)
{            
    if (startCalendar.SelectedDate == null 
        || startCalendar.SelectedDate == new DateTime(0001,1,0))
    {
        args.IsValid = false;
    }
    else
    {
        args.IsValid = true;
    }
}

asp.net – 通过ajax将jquery中的数组传递给c#webmethod

asp.net – 通过ajax将jquery中的数组传递给c#webmethod

我想将一个数组传递给一个c#webmethod,但没有一个很好的例子可以遵循.谢谢你的帮助.

这是我到目前为止:

我的阵列:

$(".jobrole").each(function (index) {

    var jobroleIndex = index;
    var jobroleID = $(this).attr('id');
    var jobroleName = $(this).text();

    var roleInfo = {
        "roleIndex": jobroleIndex,"roleID": jobroleID,"roleName": jobroleName
    };

    queryStr = { "roleInfo": roleInfo };
    jobroleArray.push(queryStr);

});

我的ajax代码

$.ajax({
            type: "POST",url: "WebPage.aspx/save_Role",data: jobroleArray,contentType: "application/json; charset=utf-8",dataType: "json",async: false,success: function (data) {
                alert("successfully posted data");
            },error: function (data) {
                alert("Failed posted data");
                alert(postData);
            }

        });

在网络方法上不确定,但这是我在想的:

[WebMethod]
    public static bool save_Role(String jobroleArray[])

解决方法

你将传递一个数组:

[
    "roleInfo": { 
              "roleIndex": jobroleIndex,"roleName": jobroleName 
     },"roleInfo": { 
              "roleIndex": jobroleIndex,...
]

在我看来,如果你有一个匹配该结构的类会更容易,如下所示:

public class roleInfo
{
     public int roleIndex{get;set;}    
     public int roleID{get;set;}
     public string roleName{get;set;}
}

因此,当您从jQuery调用Web方法时,您可以这样做:

$.ajax({
            type: "POST",data: "{'jobroleArray':"+JSON.stringify(jobroleArray)+"}",error: function (data) {
                alert("Failed posted data");
                alert(postData);
            }

        });

在您的网络方法中,您可以接收List< roleInfo>通过这种方式:

[WebMethod]
public static bool save_Role(List<roleInfo> jobroleArray)
{

}

如果你试试这个,请告诉我.以上代码没有以任何方式进行测试,因此可能存在错误,但我认为这是一种很好且非常干净的方法.

关于c# – ASP.NET自定义验证器WebMethod jQueryaspnet验证控件例子的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于asp.net – WCF vs ASPX webmethods vs ASMX webmethods、asp.net – 使用jquery调用webmethod时始终获得“401 Unauthorized”错误、asp.net – 日历自定义验证器、asp.net – 通过ajax将jquery中的数组传递给c#webmethod等相关知识的信息别忘了在本站进行查找喔。

本文标签: