Fehlermeldung ausgeben mit try catch in ASP und C#

Deletemaster

Erfahrenes Mitglied
Hallo zusammen,

Um bei einer Datenbankabfrage einen Fehler, zB. nicht vorhandener Datensatz auszugeben, möchte ich logischerweise
try, catch, finally verwenden
folgende Probleme
im ersten ClickEvent werden 7 Funktionen aufgerufen
ab der 5. Abfrage sind Fehler möglich "Keinen Datensatz gefunden !"

Leider gibt es bei ASP.NET keine MessageBox im herkommlichen Sinn

Welche Möglichkeit gibt es hier?

Programmstruktur:

OnClick(...)
{
Daten_Laden()
{
Funktion1 wird aufgerufen und erledigt // Keine Fehler möglich da konstante Werte in DropDownListen geladen werden
Funktion2 wird aufgerufen und erledigt // Keine Fehler möglich da konstante Werte in DropDownListen geladen werden
Funktion3 wird aufgerufen und erledigt // Keine Fehler möglich da konstante Werte in DropDownListen geladen werden
Funktion4 wird aufgerufen und erledigt // Keine Fehler möglich da konstante Werte in DropDownListen geladen werden

Funktion5 wird aufgerufen //kann Fehler erzeugen, da gesuchter Datensatz nicht vorhanden sein kann
Funktion6 wird aufgerufen //kann Fehler erzeugen, da gesuchter Datensatz nicht vorhanden sein kann

es folgt Programmcode//kann Fehler erzeugen, da gesuchter Datensatz nicht vorhanden sein kann
}


Hat dazu jemand eine Idee?

Danke für Eure Hilfe
 

Deletemaster

Erfahrenes Mitglied
habe ich schon versucht,

in jeder einzelnen Funktion (in der was schiefgehen kann)

try, catch, finally
aber der Aufruf der javascript methode showFehler();
hat nicht geklappt

Der javascript-code kommt ja in die aspx-Seite

<script language=JavaScript> function showFehler(){
alert ('Datensatz nicht gefunden!');}</script>

Der Aufruf soll aber von der *.cs Seite erfolgen aber wie?
catch(Exception)
{
Response.Write<a href="javascript:showFehler();
}
funktioniert nicht
habe in meinem Buch "ASP.NET Grundlagen und Profiwissen" nur ein Beispiel, wo durch einen LinkButton das script aufgerufen wird
 

yan1

Erfahrenes Mitglied
Das kommt ganz darauf an welcher Stelle du die MessageBox aufrufen willst.
Willst du sie beispielsweise gleich anzeigen wenn die Seite geladen wird, dann einfach im 'body' tag das Attribut onLoad hinzufügen. Wie man in ASP.NET direkt in den Body tag schreib weiss ich nicht, dafür kenne ich mich zu wenig darin aus.

Bsp:
HTML:
<body onLoad="javascript:showFehler()" />

//EDIT: Wie ich gerade erfahren habe braucht man das gar nicht in das onLoad Attribut schreiben, sondern einfach nur oben in dem Java Script direkt die Befehle hineinschreiben, dann wird es automatisch beim Laden ausgeführt

Lg, Yanick
 
Zuletzt bearbeitet:

Deletemaster

Erfahrenes Mitglied
Ich will die MessageBox aufrufen, wenn eine Sql_Query keinen Datensatz zurückliefert
Query in der *.cs Seite
FehlerScript in der *.aspx-Seite
Zuerst werden aus der DB-Tabelle Daten geladen die definitiv vorhanden sind
Dann werden Personendaten anhand ihrer Telefonnummer aus der Datenbank selektiert,
sollte eine Telefonnummer nicht vorhanden sein, soll die MessageBox angezeigt werden

Programmstruktur siehe oben.
 

Norbert Eder

Erfahrenes Mitglied
Eine Hilfsklasse um einen Fehler per Javascript aus einem CodeBehind-File zu zeigen:
C#:
public static class Alert 
{ 
  public static void Show(string message) 
  { 
    string repMessage = message.Replace("'", "\\'"); 
    string script = "<script type=\"text/javascript\">alert('" + repMessage + "');</script>"; 

     Page page = HttpContext.Current.CurrentHandler as Page; 

     if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert")) 
     { 
       page.ClientScript.RegisterClientScriptBlock(typeof(Alert), "alert", script); 
     } 
  } 
}
 

Deletemaster

Erfahrenes Mitglied
Hallo Norbert,

ein kleines Problem habe ich noch:

Code:
namespace Verwaltung
{

	public class Alert
	{
		public static void Show(string message)
		{    
		string showFehler = message.Replace("'", "\\'");
    
		string script = "<script type=\"text/javascript\">alert('" + showFehler + "');</script>";

		Page page = HttpContext.Current.CurrentHandler as Page;

		if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
		{       
		page.ClientScript.RegisterClientScriptBlock(typeof(Alert), "alert", script);      
		}   
	} 
}

Jetzt bekomme ich die Meldung:

System.Web.HttpContext enthält keine Defininition für CurrentHandler
System.Web.UI.Page enthält keine Defininition für ClientScript

Was muss ich hier noch beachten?

Danke für Deine Hilfe
 
Zuletzt bearbeitet: