C# обработка результата обратного вызова
Я немного борюсь со следующими условиями. Я реализовал ICallBackEventHandler на своих веб-страницах, все работает гладко, за исключением того, что возвращаемое значение из серверной части не читается функцией javascript. В консоли сообщение показывает правильное возвращаемое значение, но аргумент функции всегда пуст.
public partial class Intro : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
private string eventType = String.Empty;
protected void Page_Load(object sender, EventArgs e)
{
//ICallBack event handler
ClientScriptManager cm = Page.ClientScript;
string cbReference = cm.GetCallbackEventReference(this, "arg", "HandleResult", "");
string cbScript = "function RaiseEvent(arg){" + cbReference + ";}";
cm.RegisterClientScriptBlock(this.GetType(), "RaiseEvent", cbScript, true);
//End of ICallBack event handler
}
}
public void RaiseCallbackEvent(string eventArgument)
{
eventType = eventArgument;
}
public string GetCallbackResult()
{
return "simple";
}
А затем в интерфейсе у меня есть следующий сценарий: я запускаю событие по нажатию кнопки, используя это: RaiseEvent("start")
и я обрабатываю результат с помощью этой функции:
function HandleResult(arg) {
alert(arg); // HERE THE ARGUMENT IS ALWAYS NULL OR EMPTY !!!
}
Пожалуйста, помогите мне выяснить, почему это не работает должным образом и почему я не могу получить доступ к значению возвращаемого аргумента. Заранее спасибо.
1 ответ
Обычно это вызвано неиспользованием Page.IsPostBack
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//ICallBack event handler
ClientScriptManager cm = Page.ClientScript;
string cbReference = cm.GetCallbackEventReference(this, "arg", "HandleResult", "");
string cbScript = "function RaiseEvent(arg){" + cbReference + ";}";
cm.RegisterClientScriptBlock(this.GetType(), "RaiseEvent", cbScript, true);
//End of ICallBack event handler
}
}