it-swarm.com.de

ASP.NET-Webanwendungs-Meldungsfeld

In einer asp.net Windows Forms-Anwendung können Sie im C # -Code dahinter Folgendes verwenden:

MessageBox.Show("Here is my message");

Gibt es eine Entsprechung in einer asp.net-Webanwendung? Kann ich etwas aus dem C # -Code aufrufen, das dem Benutzer ein Meldungsfeld anzeigt?

Anwendungsbeispiel: Ich habe eine Schaltfläche, die eine Datei in den Code dahinter lädt. Wenn die Datei geladen wird oder ein Fehler auftritt, möchte ich dem Benutzer eine Nachricht mit dem Ergebnis anzeigen.

Irgendwelche Ideen dazu?

31
Baxter

Sie möchten einen Alert verwenden. Leider ist es nicht so schön wie bei Windows Forms.

ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + myStringVariable + "');", true);

Ähnlich zu dieser Frage hier: http://forums.asp.net/t/1461308.aspx/1

64
Gage

Oder erstellen Sie eine Methode wie diese in Ihrer Lösung:

public static class MessageBox {
    public static void Show(this Page Page, String Message) {
       Page.ClientScript.RegisterStartupScript(
          Page.GetType(),
          "MessageBox",
          "<script language='javascript'>alert('" + Message + "');</script>"
       );
    }
}

Dann können Sie es wie folgt verwenden:

MessageBox.Show("Here is my message");
15
Ali Humayun

Nur für die Unterlagen.

Hier ist ein Link von Microsoft Ich denke, dies ist der beste Weg, um eine MessageBox in ASP.Net ​​zu präsentieren

Außerdem werden Optionen wie Ja und NEIN angezeigt.

Anweisungen, wie Sie die Klasse aus dem Link erhalten, das an Ihrem Projekt arbeitet:

  1. Wenn Sie keinen Ordner App_Code in Ihrem Projekt haben, erstellen Sie ihn.
  2. Klicken Sie mit der rechten Maustaste auf den Ordner App_Code und erstellen Sie eine Klasse. Nennen Sie es MessageBox.cs
  3. Kopieren Sie den Text aus der Datei MessageBox.cs ( aus dem angehängten Code ) und fügen Sie ihn in Ihre Datei MessageBox.cs ein.
  4. Führen Sie die Schritte 2 und 3 für die Datei MessageBoxCore.cs aus.
  5. Wichtig: Mit der rechten Maustaste auf jede Datei klicken MessageBox.cs und MessageBoxCore.cs und sicherstellen, dass 'Build Action' ist auf Compile gesetzt
  6. Fügen Sie diesen Code zu Ihrer Seite aspx hinzu, auf der Sie das Meldungsfeld anzeigen möchten:

    <asp:Literal ID="PopupBox" runat="server"></asp:Literal>
    
  7. Fügen Sie diesen Code auf Ihrer cs Seite ein, auf der Sie die Entscheidung treffen möchten:

    string title = "My box title goes here";
    string text = "Do you want to Update this record?";
    MessageBox messageBox = new MessageBox(text, title, MessageBox.MessageBoxIcons.Question, MessageBox.MessageBoxButtons.YesOrNo, MessageBox.MessageBoxStyle.StyleA);
    messageBox.SuccessEvent.Add("YesModClick");
    PopupBox.Text = messageBox.Show(this);
    
  8. Fügen Sie diese Methode Ihrer Seite cs hinzu. Dies wird ausgeführt, wenn der Benutzer auf Ja klickt. Sie müssen für die Methode NoClick keine weitere erstellen.

    [WebMethod]
    public static string YesModClick(object sender, EventArgs e)
    {
        string strToRtn = "";
        // The code that you want to execute when the user clicked yes goes here
        return strToRtn;
    }
    
  9. Fügen Sie Ihrem Root-Pfad eine WebUserControl1.ascx -Datei hinzu und fügen Sie diesen Code der Datei hinzu:

    <link href="~/Styles/MessageBox.css" rel="stylesheet" type="text/css" />
    <div id="result"></div>
    <asp:ScriptManager runat="server" ID="scriptManager" EnablePageMethods="True">
    </asp:ScriptManager>  //<-- Make sure you only have one ScriptManager on your aspx page.  Remove the one on your aspx page if you already have one.
    
  10. Fügen Sie diese Zeile oben auf Ihrer aspx Seite ein:

    <%@ Register src="~/MessageBoxUserControl.ascx" tagname="MessageBoxUserControl" tagprefix="uc1" %>
    
  11. Fügen Sie diese Zeile in Ihre aspx Seite ein (in Ihr asp: Content Tag, falls Sie eines haben)

    <uc1:MessageBoxUserControl ID="MessageBoxUserControl1" runat="server" />
    
  12. Speichern Sie die Bilddateien 1.jpg, 2.jpg, 3.jpg, 4.jpg aus dem obigen Microsoft-Projekt in Ihr ~/Images/ Pfad.

  13. Getan

Ich hoffe es hilft.

Pablo

10
Pabinator

Es gibt verschiedene Möglichkeiten, um in ASP.NET eine clientseitige Nachrichtenbox zu erstellen - siehe hier , hier und hier zum Beispiel ...

3
Yahia

nicht wirklich. Serverseitiger Code passiert auf dem Server - Sie können Javascript verwenden, um dem Benutzer auf der Clientseite etwas anzuzeigen, aber es wird offensichtlich nur auf der Clientseite ausgeführt. Dies ist die Natur einer Client-Server-Web-Technologie. Sie sind im Grunde vom Server getrennt, wenn Sie Ihre Antwort erhalten.

2
ek_ny

Warum sollte jquery popup nicht für diesen Zweck verwendet werden? Ich verwende bpopup für diesen Zweck. Weitere Informationen hierzu.
http://dinbror.dk/bpopup/

2
Shree

Wie andere bereits erwähnt haben, wird ein Meldungsfeld clientseitig Javascript sein. Das Problem ist also, wie ein clientseitiges JS-Meldungsfeld von der Serverseite erzwungen werden kann. Eine einfache Lösung besteht darin, dies in HTML aufzunehmen:

<script>
    var data = '<%= JsData %>';
    alert(data);
</script>

und um dieses data vom serverseitigen Code-Behind aus zu füllen:

public partial class PageName : Page
{
    protected string JsData = "your message";

Beachten Sie, dass der Zeichenfolgewert eine Javascript-Zeichenfolge sein sollte, d. H. Ein Einzeiler, jedoch möglicherweise mit Escapezeichen versehene Zeilenumbrüche wie \n.

Jetzt können Sie all Ihre Javascript- oder JQuery-Fähigkeiten und -Tricks einsetzen, um mit diesem Nachrichtentext auf der Clientseite zu tun, was immer Sie wollen, z. B. ein einfaches alert() wie im obigen Codebeispiel oder in einem ausgefeilten Meldungsfeld oder Nachrichtenbanner.

(Beachten Sie, dass Popups manchmal verpönt und blockiert werden.)

Beachten Sie außerdem, dass die Nachricht aufgrund des HTTP-Protokolls nur als Antwort auf eine HTTP-Anforderung angezeigt werden kann, die der Benutzer an den Server sendet. Im Gegensatz zu WinForm-Apps kann der Webserver eine Nachricht nicht an den Client senden, wann immer dies angezeigt wird.

Wenn Sie die Nachricht nur einmal anzeigen möchten und nicht, nachdem der Benutzer die Seite mit F5 aktualisiert hat, können Sie ein Cookie mit Javascript-Code setzen und lesen. Das Schöne an dieser Methode ist auf jeden Fall, dass es eine einfache Möglichkeit ist, Daten vom Server in das Javascript auf dem Client zu übertragen, und dass Sie alle Javascript-Funktionen verwenden können, um alles zu erreichen, was Sie möchten.

1
Roland

Es gibt einige Lösungen; Wenn Sie mit CSS vertraut sind, finden Sie hier eine sehr flexible Lösung:

Erstellen Sie ein entsprechend gestaltetes Panel, das einer "Nachrichtenbox" ähnelt, fügen Sie ein Label hinzu und setzen Sie die Eigenschaft Visible auf false. Wenn der Benutzer dann eine Nachricht sehen muss nach ein Postback (z. B. Drücken einer Taste), setzen Sie von codebehind die Eigenschaft Labels Text auf die gewünschte Fehlermeldung und setzen Sie sie Die Eigenschaft Panel des Visible zu true.

1
Saeb Amini

'ASP.net MessageBox

'Fügen Sie der ASP.Net-Seite einen Skriptmanager hinzu

<asp:scriptmanager id="ScriptManager1" runat="server" />

versuchen:

{

  string sMsg = "My Message";

  ScriptManager.RegisterStartupScript(Page, Page.GetType, Guid.NewGuid().ToString(), "alert('" + sMsg + "')", true);

}
1

Sie müssen auf den Namespace verweisen


using System.Windows.Form;

und fügen Sie dann den Code hinzu

protected void Button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show(" Hi....");

    }
0
user4272864