Es gab definitiv eine Änderung zwischen dem Standardverhalten in ASP.NET AJAX Extensions 1.0 und ASP.NET AJAX 3.5. Dies wird deutlich, wenn man sich die standardmäßigen endPostBack-Ereignishandler für den Sys.WebForms.PageRequestManager ansieht. In der ersten Version wird der Fehler mit einem Alert angezeigt, während in der zweiten Version der Fehler einfach zurückgeworfen wird.
// ASP.NET AJAX Extensions 1.0
function Sys$WebForms$PageRequestManager$_endPostBack(error, response) {
this._processingRequest = false;
this._request = null;
this._additionalInput = null;
var handler = this._get_eventHandlerList().getHandler("endRequest");
var errorHandled = false;
if (handler) {
var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, this._dataItems, response);
handler(this, eventArgs);
errorHandled = eventArgs.get_errorHandled();
}
this._dataItems = null;
if (error && !errorHandled) {
alert(error.message);
}
}
// ASP.NET 3.5
function Sys$WebForms$PageRequestManager$_endPostBack(error, executor, data) {
if (this._request === executor.get_webRequest()) {
this._processingRequest = false;
this._additionalInput = null;
this._request = null;
}
var handler = this._get_eventHandlerList().getHandler("endRequest");
var errorHandled = false;
if (handler) {
var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, data ? data.dataItems : {}, executor);
handler(this, eventArgs);
errorHandled = eventArgs.get_errorHandled();
}
if (error && !errorHandled) {
throw error;
}
}
Wenn Sie möchten, dass der Alert in Ihrem ASP.NET AJAX 3.5-Code erscheint, müssen Sie nur einige kleine Änderungen vornehmen.
Zunächst müssen Sie einen Handler für das Ereignis AsyncPostBackError des ScriptManagers hinzufügen und dann die AsyncPostBackErrorMessage festlegen.
protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
{
ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Message;
}
Dann müssen Sie einen Handler für das endRequest-Ereignis des clientseitigen PageRequestManagers hinzufügen. Darin können Sie die AsyncPostBackErrorMessage auf der Serverseite abrufen und einen Alert verwenden, um die Nachricht für den Benutzer anzuzeigen.
function pageLoad()
{
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(onEndRequest);
}
function onEndRequest(sender, args)
{
var msg = args.get_error().message;
alert(msg);
args.set_errorHandled(true);
}
Ich hoffe, das hilft.
0 Stimmen
Also... niemand benutzt .NET 3.5, oder niemand macht sich Sorgen über Fehler? :)