MessagBox на JavaScript

Protected Sub ListView1_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewCommandEventArgs) Handles ListView1.ItemCommand
        '...vwmr for view more; atcr for add to cart
        Dim var As String = e.CommandArgument.ToString
        Dim type As String = Left(var, 4)
        Dim ItemID As String = Replace(var, type, "")
        'Dim ad As LinkButton = CType(ListView1.FindControl("addToCart"), LinkButton)
        Dim myStringVariable As String = "You need to login first before adding anything to the cart!"

        If type = "vwmr" Then     '........go to view more page....
            Dim url As String = "~/dedicatedItemPage_aspx/dedicatedItemPage.aspx?typeOfItem=" & _
                                Request.QueryString("typeOfItem") & "&itemID=" & ItemID
            Response.Redirect(url, True)

        ElseIf type = "atcr" Then     '..........add the item to the cart.....
            If User.Identity.Name = "" Then
                Response.Write("<script type='javascript'>window.alert('" + myStringVariable + "')</script>")


                '            ClientScript.RegisterStartupScript(Me.[GetType](), "myalert", _
                '"alert('" + myStringVariable + "');" + _
                '"document.location = '" + ResolveUrl("~/login.aspx") + "';", True)
                '            'MsgBox("You need to login first before adding anything to the cart!", , "")
                'Response.Write("<script>alert('Hello')</script>")
                'ServerAlert.Show()

                'ClientScript.RegisterStartupScript(Me.[GetType](), "myalert", "alert('" + myStringVariable + "');", True)

                'ad.Attributes.Add("onclick", _
                ' "return confirm('Are you sure you want to delete?');")
                'Alert.Show("You need to login first before adding anything to the cart!")
                'MessageBox1.ShowInfo("You need to login first before adding anything to the cart!", 300, 400)
                'Response.Redirect("~/login.aspx", True)

            Else
                '..........pull details from database..........
                Dim con As New SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;" & _
                                               "AttachDbFilename=|DataDirectory|\database.mdf;" & _
                                               "Integrated Security=True;User Instance=True")
                Dim sql As New SqlClient.SqlCommand("SELECT * FROM " & typeOfItems & " WHERE " & _
                                                    "itemID = '" & ItemID & "'", con)
                Dim reader As SqlClient.SqlDataReader
                con.Open()
                reader = sql.ExecuteReader
                reader.Read()
                Dim itemName As String = reader.Item("itemName")
                Dim itemPrice As String = reader.Item("ourPrice")
                Dim offer As String
                If reader.Item("offer").ToString = "" Then
                    offer = ""
                Else
                    offer = reader.Item("offer")
                End If
                con.Close()
                '.......................................................

                Dim userID As String = User.Identity.Name
                Dim sCart = New cart
                If sCart.CheckIfItemPresent(userID, ItemID, itemPrice, offer) = True Then
                    Exit Sub
                End If

                Dim buyNo As String = sCart.findLatestBuyNo(userID)
                Session("buyNo") = buyNo

                Session("buyNo") = sCart.AddToCart(ItemID, itemName, itemPrice, offer, buyNo, userID)
            End If
        End If   
    End Sub

я хочу заменить asp.net MsgBox предупреждением javascript... как я могу это сделать? закомментированные строки - это те, которые я уже пробовал... пожалуйста, помогите мне... срочно. asp.net MsgBox не работает на стороне клиента после публикации веб-сайта.


person Monodeep    schedule 15.05.2011    source источник
comment
ClientScript.RegisterStartupScript - это правильный путь. Что произойдет, если вы попробуете его? Вы получаете ошибку?   -  person Shadow Wizard Wearing Mask V2    schedule 15.05.2011
comment
Когда он перенаправляет в конце, зарегистрированный скрипт на стороне клиента не будет выполнен.   -  person Uwe Keim    schedule 15.05.2011
comment
когда я использую ClientScript.RegisterStartupScript ничего не происходит... он сразу переходит на страницу входа.   -  person Monodeep    schedule 15.05.2011
comment
@Monodeep: @Uwe Keim уже упоминал: если вы Response.Redirectперейдете на другую страницу, текущая страница не будет выполнена. Что вы можете сделать, так это: расширить оповещение с помощью перенаправления на стороне клиента на вашу форму входа после того, как вы предупредили о сообщении (window.location.href="login.aspx").   -  person Tim Schmelter    schedule 15.05.2011
comment
где я должен написать этот код???   -  person Monodeep    schedule 15.05.2011
comment
@Monodeep: вы должны зарегистрировать javascript через ClientScript.RegisterStartupScript. JS должен включать в себя как предупреждение, так и перенаправление на логин (см. мой последний комментарий). Поэтому, когда пользователь нажал «ОК» в предупреждении, он будет перенаправлен на логин.   -  person Tim Schmelter    schedule 15.05.2011
comment
Я очень новичок в asp.net, пожалуйста, напишите мне код.. если вы не возражаете.. и где использовать код?   -  person Monodeep    schedule 15.05.2011
comment
type='text/javascript' не type="javascript"   -  person Anyname Donotcare    schedule 15.05.2011


Ответы (3)


Вы вызываете Response.Redirect("~/login.aspx", True) в последней строке, что означает, что javascript-предупреждение даже не отправляется клиенту. Чтобы разрешить отображение окна предупреждения, вам также необходимо выполнить перенаправление на клиенте, установив document.location после предупреждения вместо использования Response.Redirect.

Нравится:

ClientScript.RegisterStartupScript(Me.[GetType](), "myalert", _
    "alert('" + myStringVariable + "');" + _
    "document.location = '" + ResolveUrl("~/login.aspx") + "';", True)

(Не уверен, что код будет работать, обычно я пишу на C#)

person SirViver    schedule 15.05.2011

Не используйте Response.Redirect. Это предотвращает выполнение текущей страницы. Вместо этого используйте window.location.href в javascript. Вот что вы, вероятно, сделали бы:

ClientScript.RegisterStartupScript(Me.[GetType](), "myalert",   
"alert('" + myStringVariable + "'); document.location = 'login.aspx';", True)
person Kamyar    schedule 15.05.2011

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

private void alert(string Msg)
{
    Response.Write("<script type='text/javascript'>window.alert('" + Msg + "')</script>");
}

Если вам нужны классные сообщения, попробуйте ссылку.

person Anyname Donotcare    schedule 15.05.2011
comment
Вы должны использовать type="javascript" вместо устаревшего атрибута language. - person ThiefMaster; 15.05.2011
comment
Упс, должно быть type="text/javascript", а не type="javascript" - person ThiefMaster; 15.05.2011
comment
Вы пробовали предыдущий метод, как я пробовал, и он работает? - person Anyname Donotcare; 15.05.2011
comment
да, я пробовал, и у меня это не работает... я разместил код выше. - person Monodeep; 15.05.2011
comment
ты написал type=javascript пожалуйста напиши type='text/javascript' - person Anyname Donotcare; 15.05.2011