Asp.net windowsフォームアプリケーションでは、C#コードビハインドで以下を使用できます。
MessageBox.Show("Here is my message");
Asp.net Webアプリケーションに同等のものはありますか?ユーザーにメッセージボックスを表示するC#コードから何かを呼び出すことはできますか?
この使用例:コードビハインドでファイルをロードするボタンがあります。ファイルがロードされたとき、またはエラーがある場合、結果を示すメッセージをユーザーにポップアップしたいと思います。
これに関するアイデアはありますか?
アラートを使用します。残念ながら、Windowsフォームほど素敵ではありません。
ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + myStringVariable + "');", true);
ここでこの質問に似ています: http://forums.asp.net/t/1461308.aspx/1
または、ソリューションで次のようなメソッドを作成します。
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");
記録のためだけに。
MicrosoftのリンクですMessageBox in ASP.Netを提示するのに最適な方法だと思います
また、YesやNOのような選択肢を提示します。
プロジェクトで作業している link からクラスを取得する方法の説明:
メッセージボックスを表示するaspxページに次のコードを追加します。
<asp:Literal ID="PopupBox" runat="server"></asp:Literal>
決定を下したい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);
このメソッドを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;
}
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.
aspxページの上部に次の行を追加します。
<%@ Register src="~/MessageBoxUserControl.ascx" tagname="MessageBoxUserControl" tagprefix="uc1" %>
aspxページ内にこの行を追加します(asp:Contentタグがある場合はその内部)
<uc1:MessageBoxUserControl ID="MessageBoxUserControl1" runat="server" />
上記のMicrosoftプロジェクトの画像ファイル1.jpg, 2.jpg, 3.jpg, 4.jpg
を~/Images/
パスに保存します。
完了
それが役に立てば幸い。
パブロ
あんまり。サーバー側のコードはサーバー上で発生しています---クライアント側でユーザーに何かを表示するためにjavascriptを使用できますが、明らかにクライアント側でのみ実行されます。これは、クライアントサーバーWebテクノロジーの性質です。応答を取得すると、基本的にサーバーから切断されます。
この目的でjqueryポップアップを使用しない理由。この目的でbpopup
を使用します。詳細.
http://dinbror.dk/bpopup/
他の人がすでに指摘したように、メッセージボックスはクライアントサイドの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のすべての機能を使用して好きなことを実行できることです。
いくつかの解決策があります。 CSSに慣れている場合、非常に柔軟なソリューションを次に示します。
「メッセージボックス」に似た適切なスタイルのPanel
を作成し、その中にLabel
を入れて、そのVisible
プロパティをfalse
に設定します。その後、ユーザーがメッセージを表示する必要があるときはいつでもafterポストバック(ボタンを押すなど)から、分離コードからLabel
s Text
プロパティを目的のエラーメッセージに設定し、Panel
のVisible
プロパティからtrue
へ。
'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);
}
名前空間を参照する必要があります
using System.Windows.Form;
そして、コードを追加します
protected void Button1_Click(object sender, EventArgs e)
{
MessageBox.Show(" Hi....");
}