Подтвердить что ты не робот

Сообщение с веб-приложением ASP.NET

В приложении формы windows asp.net в коде С# позади вы можете использовать:

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

Есть ли какой-либо эквивалент в веб-приложении asp.net? Могу ли я вызвать что-то из кода С#, за которым будет отображаться окно сообщения пользователю?

Пример использования этого: у меня есть кнопка, которая загружает файл в код позади. Когда файл загружен или если есть ошибка, я хотел бы вывести сообщение пользователю с указанием результата.

Любые идеи по этому поводу?

4b9b3361

Ответ 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");

Я попробовал, и он сработал.

Удачи.