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

JavaScript: Alert.Show(сообщение) От ASP.NET Code-behind

Я читаю этот JavaScript: Alert.Show (сообщение) Из кода ASP.NET

Я пытаюсь реализовать то же самое. Итак, я создал статический класс, как это:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Text;
using System.Web.UI;

namespace Registration.DataAccess
{
    public static class Repository
    {
        /// <summary> 
        /// Shows a client-side JavaScript alert in the browser. 
        /// </summary> 
        /// <param name="message">The message to appear in the alert.</param> 
        public static void Show(string message) 
            { 
               // Cleans the message to allow single quotation marks 
               string cleanMessage = message.Replace("'", "\'"); 
               string script = "<script type="text/javascript">alert('" + cleanMessage + "');</script>"; 

               // Gets the executing web page 
               Page page = HttpContext.Current.CurrentHandler as Page; 

               // Checks if the handler is a Page and that the script isn't allready on the Page 
               if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert")) 
               { 
                 page.ClientScript.RegisterClientScriptBlock(typeof(Alert), "alert", script); 
               } 
            } 
    }
}

На этой линии:

string script = "<script type="text/javascript">alert('" + cleanMessage + "');</script>"; 

Это показывает мне ошибку :; ожидаемый

А также на

page.ClientScript.RegisterClientScriptBlock(typeof(Alert), "alert", script); 

Err: Тип или имя пространства имен 'Alert' не может быть найдено (вам не хватает директивы using или ссылки на сборку?)

Что я здесь не так делаю?

4b9b3361

Ответ 1

Вот простой способ:

Response.Write("<script>alert('Hello');</script>");

Ответ 2

string script = string.Format("alert('{0}');", cleanMessage);
if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert")) 
{
    page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", script, true /* addScriptTags */);
}

Ответ 3

Это сообщение показывает сообщение с предупреждением напрямую

ScriptManager.RegisterStartupScript(this,GetType(),"showalert","alert('Only alert Message');",true);

Это сообщение показывает сообщение с функцией JavaScript

ScriptManager.RegisterStartupScript(this, GetType(), "displayalertmessage", "Showalert();", true);

Это два способа отображения предупреждающих сообщений в коде С# позади

Ответ 4

если вы используете ScriptManager на странице, вы также можете попробовать:

System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "AlertBox", "alert('Your Message');", true);

Ответ 5

Попробуйте этот метод:

public static void Show(string message) 
{                
    string cleanMessage = message.Replace("'", "\'");                               
    Page page = HttpContext.Current.CurrentHandler as Page; 
    string script = string.Format("alert('{0}');", cleanMessage);
    if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert")) 
    {
        page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", script, true /* addScriptTags */);
    } 
} 

В Vb.Net

Public Sub Show(message As String)
    Dim cleanMessage As String = message.Replace("'", "\'")
    Dim page As Page = HttpContext.Current.CurrentHandler
    Dim script As String = String.Format("alert('{0}');", cleanMessage)
    If (page IsNot Nothing And Not page.ClientScript.IsClientScriptBlockRegistered("alert")) Then
        page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", script, True) ' /* addScriptTags */
    End If
End Sub

Ответ 6

Ваш код не компилируется. Строка, которую вы завершаете неожиданно,

string script = "<script type=";

Это эффективно то, что вы написали. Вам нужно избегать двойных кавычек:

string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";

Такая вещь должна быть болезненно очевидной, так как раскраска исходного кода должна быть полностью разжата.

Ответ 7

Могло быть несколько причин не работать.

1: Правильно ли вы вызываете свою функцию? т.е.

Repository.Show("Your alert message");

2: попробуйте использовать метод RegisterStartUpScript вместо scriptblock.

3: Если вы используете UpdatePanel, это может быть проблемой.

Отметьте это (тема 3.2)

Ответ 8

ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('ID Exists ')</script>");

Ответ 9

И я думаю, строка:

string cleanMessage = message.Replace("'", "\'"); 

не работает, он должен быть:

string cleanMessage = message.Replace("'", "\\\'");

Вам нужно замаскировать \ с помощью \ и ' с помощью другого \.

Ответ 10

Вызов функции JavaScript из кода

Шаг 1 Добавьте свой Javascript-код

<script type="text/javascript" language="javascript">
    function Func() {
        alert("hello!")
    }
</script>

Шаг 2 Добавьте 1 Script Менеджер в свой веб-форму и добавьте 1 кнопку тоже

Шаг 3 Добавьте этот код в событие нажатия кнопки

ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "Func()", true);

Ответ 11

Попробуйте это, если вы хотите отобразить окно предупреждения для отображения на той же странице, без отображения на пустой странице.

ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('Sorry there are no attachments');", true);

Ответ 12

Вам нужно исправить эту строку:

string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>"; 

А также этот:

RegisterClientScriptBlock("alert", script); //lose the typeof thing

Ответ 13

string script = string.Format("alert('{0}');", cleanMessage);     
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "key_name", script );", true);

Ответ 14

Работает 100% без каких-либо проблем и не перенаправляется на другую страницу... Я попытался просто скопировать это и изменить ваше сообщение

// Initialize a string and write Your message it will work
string message = "Helloq World";
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("alert('");
sb.Append(message);
sb.Append("');");
ClientScript.RegisterOnSubmitStatement(this.GetType(), "alert", sb.ToString());

Ответ 15

Цитаты вокруг type = "text/javascript" заканчивают вашу строку до того, как вы захотите. Используйте одиночные кавычки внутри, чтобы избежать этой проблемы.

Используйте этот

 type='text/javascript'

Ответ 16

попробовать:

string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";

Ответ 17

Этот метод можно использовать после отправки клиентского кода в виде строкового параметра.

ПРИМЕЧАНИЕ. Я не придумал это решение, но я наткнулся на него, когда искал способ сделать это сам, я только немного его отредактировал.

Это очень просто и полезно и может использовать его для выполнения более 1 строки javascript/jquery/... или любого клиентского кода

private void MessageBox(string msg)
{
    Label lbl = new Label();
    lbl.Text = "<script language='javascript'>" + msg + "')</script>";
    Page.Controls.Add(lbl);
}

источник: fooobar.com/questions/114094/...

Ответ 18

string script = "<script type="text/javascript">alert('" + cleanMessage + "');</script>"; 

В этом случае вы должны использовать string.Format. Это лучший стиль кодирования. Для вас это будет:

string script = string.Format(@"<script type='text/javascript'>alert('{0}');</script>");

Также обратите внимание, что когда вы должны избегать символа или вместо него использовать апостроф.

Ответ 19

private void MessageBox(string msg)
{
    Label lbl = new Label();
    lbl.Text  = string.Format(@"<script type='text/javascript'>alert('{0}');</script>",msg);
    Page.Controls.Add(lbl);
}

Ответ 20

Вам нужно избежать ваших котировок (см. раздел "Специальные символы" ). Вы можете сделать это, добавив перед ними косую черту:

string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";
  Response.Write(script);

Ответ 21

Я использую это, и он работает, пока страница не перенаправляется впоследствии. Было бы неплохо показать это и ждать, пока пользователь нажимает ОК, независимо от перенаправления.

/// <summary>
/// A JavaScript alert class
/// </summary>
public static class webMessageBox
{

/// <summary>
/// Shows a client-side JavaScript alert in the browser.
/// </summary>
/// <param name="message">The message to appear in the alert.</param>
    public static void Show(string message)
    {
       // Cleans the message to allow single quotation marks
       string cleanMessage = message.Replace("'", "\\'");
       string wsScript = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";

       // Gets the executing web page
       Page page = HttpContext.Current.CurrentHandler as Page;

       // Checks if the handler is a Page and that the script isn't allready on the Page
       if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
       {
           //ClientScript.RegisterStartupScript(this.GetType(), "MessageBox", wsScript, true);
           page.ClientScript.RegisterClientScriptBlock(typeof(webMessageBox), "alert", wsScript, false);
       }
    }    
}

Ответ 22

Вызов script только не может сделать этого, если событие является событием PAGE LOAD специально.

вам нужно позвонить, Response.Write(script);

как и выше, string script= "alert ('" + cleanMessage + "');"; Response.Write(script);

будет работать, по крайней мере, для события загрузки страницы.

Ответ 23

if u Want To массаж на вашем коде за файлом, попробуйте это

string popupScript = "<script language=JavaScript>";
popupScript += "alert('Your Massage');";

popupScript += "</";
popupScript += "script>";
Page.RegisterStartupScript("PopupScript", popupScript);

Ответ 24

вы можете использовать следующий код.

 StringBuilder strScript = new StringBuilder();
 strScript.Append("alert('your Message goes here');");
 Page.ClientScript.RegisterStartupScript(this.GetType(),"Script", strScript.ToString(), true);

Ответ 25

 <!--Java Script to hide alert message after few second -->
    <script type="text/javascript">
        function HideLabel() {
            var seconds = 5;
            setTimeout(function () {
                document.getElementById("<%=divStatusMsg.ClientID %>").style.display = "none";
            }, seconds * 1000);
        };
    </script>
    <!--Java Script to hide alert message after few second -->

Ответ 26

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

using system.widows.forms;

тогда, когда вы хотите показать окно сообщения, просто назовите его так же просто, как на С#, например:

messagebox.show("Welcome");