你能从页面的静态方法中检索用户控件吗?

时间:2013-05-11 16:57:51

标签: c# asp.net ajax webmethod

我正在尝试使用ajax / jquery从客户端调用User Control中的方法。我的ajax看起来像这样:

function starClick(starIndex) {
    $.ajax({
        type: "POST",
        url: "ItemPage.aspx/postRatingProxy",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            document.getElementById("testAjax").innerHTML = msg.d;
        }
    });
}

我的页面方法类似于:

[WebMethod]
public static string postRatingProxy()
{
    return .......postRating();
}

然后用户控制方法看起来像:

public static string postRating()
{
    return "git er done";
}

我在某个地方看到了这种方法。虽然我很遗憾如何在静态时从Page方法中检索我的UserControl方法。是否可以从静态方法中检索UserControl,或者我只是遇到了死胡同?

1 个答案:

答案 0 :(得分:0)

  

是否可以从静态方法中检索UserControl或   我刚刚陷入死胡同吗?

不,这是不可能的。 ASP.NET PageMethod是静态的,不允许您访问任何用户控件。这样做的原因是简单的。使用jQuery执行AJAX请求时,没有ViewState被发送到服务器,因此用户控件的概念几乎没有意义。如果您需要访问Page Method中的某个值,则将此值作为参数发送到AJAX请求中:

data: JSON.stringify({ someParameter: 'some value you could take from wherevr you want' }),