我使用webservice从javascript调用codebehind中的函数。
function GetAdmissionType()
{
InitComponents();
var type="";
type=document.getElementById(dlAdmissionType.id).value;
document.getElementById(hdnAdmissionType.id).value=document.getElementById(dlAdmissionType.id).value;
else if(type=="2")
{
InitComponents();
ViewResettingPanel()
makeFavorite(1);
}
}
function makeFavorite(id) {
PageMethods.SaveInfo(id, CallSuccess, CallFailed);
}
// This will be Called on success
function CallSuccess(res, id) {
alert(destCtrl);
}
// This will be Called on failure
function CallFailed(res) {
alert(res.get_message());
}
以下是我在codebehind中的代码
[System.Web.Services.WebMethod]
public static void SaveInfo(String Id)
{
//to get textbox in form
}
问题是我没有在SaveInfo中获取aspx页面中的控件。任何人都可以帮助访问saveinfo中的表单中的控件吗?
答案 0 :(得分:1)
静态页面方法无法获取页面的控制树。 (他们没有收到ViewState)
您需要使用UpdatePanel
。
您可以使用常规asp:Button
事件在<div style="display:none>
内置Click
,按钮触发UpdatePanel
,然后使用Javascript模拟点击按钮。
或者,您可以将您需要的控件值作为参数发送到Javascript中的页面方法。这比使用UpdatePanel
更有效。
答案 1 :(得分:0)
你不能。
对于页面类的所有实例,您的WebMethod都是静态的,这意味着它只存在一次。它没有您网页的任何单个实例的概念。
如果您需要回发页面,则需要实际使用回发,而不是网络服务电话。