我的网站中有一个页面,其中有5个不同的文本框,可以为我的数据库添加不同的内容。我希望每个人能够拥有与之相关的成功代码,但也能够刷新页面。我使用Response.Write("<script>alert(" & "'Image Title added successfully'" & ")</script>")
来显示消息,但是当我向其添加Response.Redirect("AddToPicklist.aspx")
时,成功消息不再显示。 ASP.net有更简单的方法吗?
<tr><td class="title">Image</td></tr>
<tr><td>Image Title: </td></tr>
<tr><td><asp:TextBox ID="txtImageTitle" runat="server"></asp:TextBox></td></tr>
<tr><td><asp:Button ID="btnSubmitImage" runat="server" Text="Submit" /></td></tr>
</table><br />
Protected Sub btnSubmitImage_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmitImage.Click
**insert code is here but it's not relevant so I'm omitting it**
Response.Write("<script>alert(" & "'Image Title added successfully'" & ")</script>")
Response.Redirect("AddToPicklist.aspx")
答案 0 :(得分:2)
您正在同一个请求中重定向,因此您希望输出的javascript将永远不会被呈现。
1解决方案是将查询字符串传递给下一页,如:
Response.Redirect("AddToPicklist.aspx?alert=titleadded")
然后在AddToPicklist.aspx
上执行:
If Request.QueryString("alert") = "titleadded" Then
Response.Write("<script>alert(" & "'Image Title added successfully'" & ")</script>")
End If
或者你可以在提醒后通过javascript重定向到页面,但这对没有启用javascript的用户来说会很糟糕。
在旁注中,请查看使用ClientScriptManager.RegisterStartupScript
输出javascript,而不是Response.Write
答案 1 :(得分:1)
重定向将使页面(或其他页面 - 不确定您的页面被调用)从头开始重新加载,因此不会再次输入点击事件,并且不会插入<script>
。
我建议不要使用Response.Write
在客户端上生成消息。至少使用registerclientscriptblock,例如
RegisterClientScriptBlock("showSaveMessage", _
"<script language=""JavaScript""> _
alert('Your changes have been saved.'); _
</script>")
但我会考虑使用WebService to write to your DB。然后你就不必有完整的回发。
答案 2 :(得分:0)
我将使用Response.Write("<script type='text/javascript'>{ alert('Image Title added successfully'); document.location.href = 'AddToPickList.aspx'; }</script>")