Сообщение с веб-приложением ASP.NET
В приложении формы windows asp.net в коде С# позади вы можете использовать:
MessageBox.Show("Here is my message");
Есть ли какой-либо эквивалент в веб-приложении asp.net?
Могу ли я вызвать что-то из кода С#, за которым будет отображаться окно сообщения пользователю?
Пример использования этого: у меня есть кнопка, которая загружает файл в код позади. Когда файл загружен или если есть ошибка, я хотел бы вывести сообщение пользователю с указанием результата.
Любые идеи по этому поводу?
Ответы
Ответ 1
Вы хотите использовать оповещение. К сожалению, это не так хорошо, как с формами окон.
ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + myStringVariable + "');", true);
Аналогично этому вопросу: http://forums.asp.net/t/1461308.aspx/1
Ответ 2
Или создайте такой метод в своем решении:
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");
Ответ 3
Только для записей.
Вот ссылка от Microsoft, которую я считаю лучшим способом представить MessageBox в ASP.Net
Также он предлагает такие варианты, как Да и НЕТ.
Инструкции о том, как получить класс из , работающего над вашим проектом:
- Если у вас нет папки App_Code в вашем проекте, создайте ее.
- Щелкните правой кнопкой мыши папку App_Code и создайте класс. Назовите его MessageBox.cs
- Скопируйте текст из файла MessageBox.cs(из прилагаемого кода) и вставьте его в файл MessageBox.cs.
- Сделайте то же самое, что и шаги 2 и 3 для файла MessageBoxCore.cs.
- Важно: Щелкните правой кнопкой мыши каждый файл MessageBox.cs и MessageBoxCore.cs и убедитесь, что для "Build Action" установлено значение "Компилировать"
-
Добавьте этот код на страницу 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: тег контента, если он у вас есть)
<uc1:MessageBoxUserControl ID="MessageBoxUserControl1" runat="server" />
-
Сохраните файлы изображений 1.jpg, 2.jpg, 3.jpg, 4.jpg
из проекта Microsoft выше в ваш путь ~/Images/
.
-
Готово
Надеюсь, что это поможет.
Пабло
Ответ 4
Существует несколько вариантов создания клиентского бокса в ASP.NET - см. здесь, здесь и здесь, например...
Ответ 5
на самом деле. Код сервера на сервере - вы можете использовать javascript для отображения чего-либо пользователю на стороне клиента, но он, очевидно, будет выполняться только на стороне клиента. Это характер веб-технологии клиентского сервера. Когда вы получаете ответ, вы в основном отключены от сервера.
Ответ 6
Почему бы не использовать всплывающее окно jquery для этой цели. Для этой цели я использую bpopup
. Подробнее об этом.
http://dinbror.dk/bpopup/
Ответ 7
Существует несколько решений; если вам удобно с CSS, здесь очень гибкое решение:
Создайте подходящий стиль Panel
, похожий на "ящик сообщений", поместите в него Label
и установите для его свойства Visible
значение false
. Затем, когда пользователю нужно увидеть сообщение после обратной передачи (например, нажав кнопку), из кода установите свойство Label
Text
в нужное сообщение об ошибке и установите для свойства Panel
Visible
значение true
.
Ответ 8
'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);
}
Ответ 9
Как уже указывали другие, окно сообщения будет клиентом Javascript. Таким образом, проблема заключается в том, как заставить клиентский ящик сообщений JS со стороны сервера. Простым решением является включение этого в HTML:
<script>
var data = '<%= JsData %>';
alert(data);
</script>
и заполнить этот data
с помощью кода на стороне сервера:
public partial class PageName : Page
{
protected string JsData = "your message";
Обратите внимание, что строковое значение должно быть строкой Javascript, т.е. быть однострочным, но может содержать экранированные символы новой строки как \n
.
Теперь вы можете использовать все свои навыки и трюки Javascript или JQuery, чтобы делать все, что хотите, с этим текстом сообщения на стороне клиента, например, отображать простой alert()
, как показано в приведенном выше примере кода, или сложное окно сообщения или баннер сообщений.
(Обратите внимание, что всплывающие окна иногда нахмуриваются и блокируются)
Обратите внимание также, что из-за протокола HTTP сообщение может отображаться только в ответ на HTTP-запрос, который пользователь отправляет на сервер. В отличие от приложений WinForm, веб-сервер не может нажимать сообщение клиенту всякий раз, когда он сочтет нужным.
Если вы хотите показывать это сообщение только один раз, а не после того, как пользователь обновит страницу с помощью F5, вы можете установить и прочитать файл cookie с кодом javascript. В любом случае хорошей точкой с этим методом является то, что это простой способ получить данные с сервера на javascript на клиенте и что вы можете использовать все функции javascript для выполнения всего, что вам нравится.
Ответ 10
Вам нужно ссылаться на пространство имен
using System.Windows.Form;
а затем добавьте код
protected void Button1_Click(object sender, EventArgs e)
{
MessageBox.Show(" Hi....");
}
Ответ 11
если вы включите
System.Windows.forms
в качестве пространства имен, тогда он будет конфликтовать.
Используйте
btn_click()
{
System.Windows.Forms.MessageBox.Show("Hello");
}
Ответ 12
Щелкните правой кнопкой мыши проводник решений и выберите диалоговое окно добавления reference.one
. На этом выберите (.net)-> System.windows.form
. Импортируйте System.Windows.Forms (vb)
и используя System.windows.forms(C#)
скопируйте это в свое кодирование, а затем напишите messagebox.show("")
.
Ответ 13
Просто добавьте пространство имен:
System.Windows.forms
к вашей ссылке на веб-приложение или когда-либо, и у вас есть доступ к вашему:
MessageBox.Show("Here is my message");
Я попробовал, и он сработал.
Удачи.