WebMethod访问页面控件和设置值

时间:2015-09-09 13:54:57

标签: asp.net ajax webmethod

我的页面名称

public partial class AtamaGorevDegistir : System.Web.UI.Page
{}

我的webmethod ajax方

var path = getLocation(location.href);
$.ajax({
    type: "POST",
    url: path.pathname + "/KisiBilgiDoldur",
    //  data: "{" + str + "}",
    contentType: "application/json; charset=utf-8",
    //  dataType: "json",
    success: function (data) {
        var dd = data.d;
        $('.modal-dialog').css({ width: '85%' });
        $('#AtamaModal').modal({ show: true });
    }
});

我的网络方法

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string KisiBilgiDoldur(string KayitID, string TeklifID)
{
   AtamaGorevDegistir atama = new AtamaGorevDegistir();
   atama.AtananSuren.Value = "123";
   return null;
}

但是我的问题我的控件是空的。但我可以访问此方法但没有设置值并给出错误消息。为什么会这样?

3 个答案:

答案 0 :(得分:1)

WebMethod和ScriptMethod无法访问调用页面的控件集合。可以将其视为正常Web窗体生命周期之外的内容。当您使用AJAX时,您需要将所有数据传递到它需要的服务器端方法,并且您的服务器端应该返回客户端所需的所有数据。然后客户端应该获取返回的数据并根据需要操作DOM以显示结果。

在您的WebMethod中,返回数据而不是尝试将其分配给控件,删除return null;

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string KisiBilgiDoldur(string KayitID, string TeklifID)
{
   return "123";
}

在客户端成功处理程序中,获取返回的数据并使用JavaScript设置控件的值。

var path = getLocation(location.href);
$.ajax({
    type: "POST",
    url: path.pathname + "/KisiBilgiDoldur",
    //  data: "{" + str + "}",
    contentType: "application/json; charset=utf-8",
    //  dataType: "json",
    success: function (data) {
        var dd = data.d;
        $('.modal-dialog').css({ width: '85%' });
        $('#AtamaModal').modal({ show: true });
        //set control value to data.d here
    }
});

答案 1 :(得分:0)

您不能使用web方法设置控件值。您在浏览器中返回一个值并从api返回并执行某些操作。使用webmethods与webforms不同。您在网络方法中返回的值为空...您将该空值设置为' dd'在js,但你不做任何事情。当你从网络方法中获得价值时,你需要用它来做一些事情。尝试提醒(data.d)'在你的成功回调,看看我的意思。然后$('#elm')。text(data.d),如果你想在页面上。

答案 2 :(得分:0)

您应该为数据添加参数。

$.ajax({
        type: "POST",
        url: path.pathname + "/KisiBilgiDoldur",
        data:JSON.stringify({ KayitID: '1', TeklifID:'2' }), 
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            var dd = data.d;

            $('.modal-dialog').css({ width: '85%' });
            $('#AtamaModal').modal({ show: true });
        }
    });