我一直坚持这个问题一段时间了,真的可以使用一些建议......
我正在开发一个ASP.Net网页,到目前为止,它有大约60个控件(文本框,复选框和下拉列表),其中一些来自Web用户控件。如果可能的话,我想在没有回发的情况下保存数据。我试图通过AJAX实现这一点,但无法用C#web方法引用我的控件。
无论如何在没有回发的情况下调用常规C#方法?或者是通过将所有控件值的数组从JavaScript传递到C#Web方法来实现此目的的唯一方法?如果是这样,是否有任何简单的方法可以将所有控件值放入JavaScript中的数组中,然后放入C#中的DataTable
?
随意为此问题提出任何其他解决方案。
答案 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
}
如果您将字典的键命名为方法的参数,则可以直接调用它们。