10

我对 C# 和 javascript 有点陌生,所以虽然我的问题很具体,但我愿意接受任何替代方案。

我有一个值数组(我在 javascript 函数中创建),我想将其发送到我的代码隐藏文件以在方法中使用。从我使用 ajax 研究并使用 JSON 对数组进行字符串化似乎是最好的方法。

我的问题是

  1. 我可以使用这种方法传递数组吗?

  2. 如何捕获服务器端的信息(在我的代码隐藏中?)

Javascript 传递值

var jsonvalues = JSON.stringify(values);
var callback = window.location.href
$.ajax({
  url: callback
  type: "POST",
  contentType: 'application/json',
  data: jsonvalues
});

我见过许多使用 [WebMethod] 或某种 WebService 来捕获数据的解决方案,我可以使用它在我的代码隐藏文件中工作而无需返回数据吗?

这是我在代码隐藏文件中使用的内容

[WebMethod]
public static void done(string[] ids)
{
String[] a = ids;
}
4

3 回答 3

8

我已经为此使用 ASP.NET MVC 编写了一个深入的示例,但它可以很容易地适用于 WebForms。

使用 jquery 将数据发送到 MVC 控制器

除了调用 WebMethod 的位置之外,HTML 和 jQuery 看起来几乎完全相同。

如果您正在使用的页面被调用Default.aspx,并且该方法被调用Done,那么您的 WebMethod 的 URL 将是Default.aspx/Done

<script>
       // Grab the information 
       var values = {"1,","2","3"};
       var theIds = JSON.stringify(values);

       // Make the ajax call
       $.ajax({
         type: "POST",
         url: "Default.aspx/Done", // the method we are calling
         contentType: "application/json; charset=utf-8",
         data: {ids: theIds },
         dataType: "json",
         success: function (result) {
             alert('Yay! It worked!');               
         },
         error: function (result) {
             alert('Oh no :(');
         }
     });
  </script>

你的WebMethod将仍然是一样的。

[WebMethod]
public static void done(string[] ids)
{
   String[] a = ids;
   // Do whatever processing you want
   // However, you cannot access server controls
   // in a static web method.
}
于 2012-06-20T21:23:53.997 回答
0

最简单的方法是使用 ASP.NET MVC 并将数据绑定到一个列表。因此,对于字符串列表,这将非常容易。只需进行如下所示的控制器操作:

[HttpPost]
public ActionResult MyAction(string[] values)
{
    ... debug and see that values gets set to your array from javascript ...
}

然后传递data: values你的$.ajax电话。不需要字符串化,jQuery 会弄清楚该怎么做。对于更复杂的列表绑定,请查看此(以及许多其他资源,例如它谈论绑定到复杂对象列表的奇特方法):

http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

[WebMethod]要从网页或 Web 服务调用方法,请查看本指南:

http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

基本上虽然你需要的网址是ServicePage.aspx/MethodName

于 2012-06-20T16:08:23.333 回答
-1

使用 runat=server 将您的数据放在隐藏字段中。发布表单并正常获取数据。

于 2012-06-20T21:11:14.700 回答