web-dev-qa-db-ja.com

ASP.NET Webアプリケーションメッセージボックス

Asp.net windowsフォームアプリケーションでは、C#コードビハインドで以下を使用できます。

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

Asp.net Webアプリケーションに同等のものはありますか?ユーザーにメッセージボックスを表示するC#コードから何かを呼び出すことはできますか?

この使用例:コードビハインドでファイルをロードするボタンがあります。ファイルがロードされたとき、またはエラーがある場合、結果を示すメッセージをユーザーにポップアップしたいと思います。

これに関するアイデアはありますか?

31
Baxter

アラートを使用します。残念ながら、Windowsフォームほど素敵ではありません。

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

ここでこの質問に似ています: http://forums.asp.net/t/1461308.aspx/1

64
Gage

または、ソリューションで次のようなメソッドを作成します。

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>"
       );
    }
}

その後、次のように使用できます。

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

記録のためだけに。

MicrosoftのリンクですMessageBox in ASP.Netを提示するのに最適な方法だと思います

また、YesNOのような選択肢を提示します。

プロジェクトで作業している link からクラスを取得する方法の説明:

  1. プロジェクトにApp_Codeフォルダーがない場合は、作成します。
  2. App_Codeフォルダーを右クリックして、クラスを作成します。名前を付けてくださいMessageBox.cs
  3. MessageBox.csファイル( 添付コードから )からテキストをコピーし、MessageBox.csファイル。
  4. MessageBoxCore.csファイルに対して手順2および3と同じ操作を行います。
  5. 重要:各ファイルMessageBox.csおよびMessageBoxCore.csを右クリックして、 'Build Action'Compileに設定されます
  6. メッセージボックスを表示するaspxページに次のコードを追加します。

    <asp:Literal ID="PopupBox" runat="server"></asp:Literal>
    
  7. 決定を下したいcsページに次のコードを追加します。

    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. このメソッドをcsページに追加します。これは、ユーザーが[はい]をクリックすると実行されます。 NoClickメソッド用に別のものを作成する必要はありません。

    [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. WebUserControl1.ascxファイルをルートパスに追加し、このコードをファイルに追加します。

    <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. aspxページの上部に次の行を追加します。

    <%@ Register src="~/MessageBoxUserControl.ascx" tagname="MessageBoxUserControl" tagprefix="uc1" %>
    
  11. aspxページ内にこの行を追加します(asp:Contentタグがある場合はその内部)

    <uc1:MessageBoxUserControl ID="MessageBoxUserControl1" runat="server" />
    
  12. 上記のMicrosoftプロジェクトの画像ファイル1.jpg, 2.jpg, 3.jpg, 4.jpg~/Images/パスに保存します。

  13. 完了

それが役に立てば幸い。

パブロ

10
Pabinator

ASP.NETでクライアント側のメッセージボックスを作成するには、いくつかのオプションがあります。たとえば、 herehere 、および here を参照してください...

3
Yahia

あんまり。サーバー側のコードはサーバー上で発生しています---クライアント側でユーザーに何かを表示するためにjavascriptを使用できますが、明らかにクライアント側でのみ実行されます。これは、クライアントサーバーWebテクノロジーの性質です。応答を取得すると、基本的にサーバーから切断されます。

2
ek_ny

この目的でjqueryポップアップを使用しない理由。この目的でbpopupを使用します。詳細.
http://dinbror.dk/bpopup/

2
Shree

他の人がすでに指摘したように、メッセージボックスはクライアントサイドのJavascriptになります。したがって、問題は、サーバー側からクライアント側のJSメッセージボックスを強制する方法です。簡単な解決策は、これをHTMLに含めることです。

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

サーバー側のコードビハインドからこのdataを入力するには:

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

文字列値はJavascript文字列、つまり1行である必要がありますが、\nとしてエスケープされた改行が含まれている場合があります。

これで、JavascriptまたはJQueryのすべてのスキルとトリックを使用して、上記のコードサンプルに示されているように簡単なalert()を表示したり、洗練されたメッセージボックスまたはメッセージバナー。

(ポップアップは時々眉をひそめてブロックされることに注意してください)

また、HTTPプロトコルのため、メッセージは、ユーザーがサーバーに送信するHTTP要求への応答でのみ表示されることに注意してください。 WinFormアプリとは異なり、Webサーバーは、適切と判断した場合にクライアントにメッセージをプッシュできません。

ユーザーがF5でページを更新した後ではなく、メッセージを一度だけ表示したい場合は、JavaScriptコードでCookieを設定して読み取ることができます。いずれにせよ、このメソッドの素晴らしい点は、サーバーからクライアント上のjavascriptにデータを取得する簡単な方法であり、javascriptのすべての機能を使用して好きなことを実行できることです。

1
Roland

いくつかの解決策があります。 CSSに慣れている場合、非常に柔軟なソリューションを次に示します。

「メッセージボックス」に似た適切なスタイルのPanelを作成し、その中にLabelを入れて、そのVisibleプロパティをfalseに設定します。その後、ユーザーがメッセージを表示する必要があるときはいつでもafterポストバック(ボタンを押すなど)から、分離コードからLabels Textプロパティを目的のエラーメッセージに設定し、PanelVisibleプロパティからtrueへ。

1
Saeb Amini

'ASP.net MessageBox

'スクリプトマネージャーをASP.Netページに追加します

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

試してください:

{

  string sMsg = "My Message";

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

}
1

名前空間を参照する必要があります


using System.Windows.Form;

そして、コードを追加します

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

    }
0
user4272864