如何将控件值从javaScript传递给C#WebMethod

时间:2011-11-23 21:13:25

标签: c# javascript ajax visual-studio-2010 webmethod

我一直坚持这个问题一段时间了,真的可以使用一些建议......

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

无论如何在没有回发的情况下调用常规C#方法?或者是通过将所有控件值的数组从JavaScript传递到C#Web方法来实现此目的的唯一方法?如果是这样,是否有任何简单的方法可以将所有控件值放入JavaScript中的数组中,然后放入C#中的DataTable

随意为此问题提出任何其他解决方案。

2 个答案:

答案 0 :(得分:1)

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

calling a public function of an asp.net ajax server control from client side

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

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

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

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

答案 1 :(得分:1)

客户端

$.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
    }

如果您将字典的键命名为方法的参数,则可以直接调用它们。