如何将控件值从javaScript传递到c# WebMethod

本文关键字:WebMethod javaScript 控件 | 更新日期: 2023-09-27 18:15:47

我已经被这个问题困了一段时间了,现在真的可以使用一些建议…

我正在做ASP。Net网页,到目前为止有大约60个控件(文本框,复选框和下拉列表),其中一些来自web用户控件。如果可能的话,我想保存数据而不回发。我试图通过AJAX来实现这一点,但我无法用c# web方法引用我的控件。

在没有回发的情况下调用常规c#方法是否可行?或者是唯一的方法来实现这一点,也许通过传递数组的所有控件值从JavaScript到c# web方法?如果是这样,是否有任何简单的方法来获得所有的控制值到一个数组在JavaScript,然后到一个DataTable在c# ?

请随意提出解决这个问题的其他方法。

如何将控件值从javaScript传递到c# WebMethod

我在这里回答了一个类似的问题:

从客户端调用asp.net ajax服务器控件的公共函数

你基本上设置了一个asmx服务,并添加一些脚本启用属性,让脚本管理器生成一些ajax代理存根调用。

我最近在一个web应用程序中做了这件事,我正在转换从更新面板,我的服务器调用看起来像:

var data = $("#inlineContent :input").serialize();
MyApplication.AttorneyService.PostAttorneyForm(data,
    function(result) { ... };
    function(error) { ... });

然后在服务器上,我将序列化字符串读入字典,并且使用它来填充知道如何将自身更新到SQL服务器的业务对象。

客户端

$.ajax({
            type: 'POST',
            url: "changebrands.aspx/UpdatePlan",
            data: '{token:"{0}", plan:"{1}"}'.format(token, currPlan),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (json) { //process return
            }
        });

服务端(c#)

using System.Web.Services;
    [WebMethod]
    public static string UpdatePlan(string token, string plan)
    {
        //whatever
    }

如果字典的键与方法的参数同名,则可以直接调用它们