验证后刷新asp.net网页

时间:2010-04-09 14:31:07

标签: c# asp.net-3.5

我有一个asp.net网页(C#2008),用户可以输入一个EmployeeID,当他们跳出文本框时(页面在代码隐藏中执行验证代码块),他们会得到一个消息框提示他们从下拉列表框中选择两个值中的一个。

代码隐藏中的消息提示的代码是:

Response.Write("<script>window.alert('Please select Alpha or Beta')</script>");

显示提示后,用户点击“确定”并返回页面,页面上的文字显示失真(标签中的文字尺寸较大,标签被包裹到另一条线等)

我尝试在代码隐藏中的消息框之后添加Response.Redirect("UserProfileMaint.aspx");,但现在,消息框没有出现;

所以这是我的顺序:

  • 用户输入EmployeeID
  • 如果用户未选择Alpha或 Beta,然后显示messagebox
  • 如果用户已选择Alpha或Beta, 然后不要显示messagebox

我想显示消息框验证,并确保页面上文本的外观不会失真。我怎么能这样做?

3 个答案:

答案 0 :(得分:5)

Response.Write直接写入输出流,将其放在浏览器非常困惑的<html>之前(导致文本问题)。你想要做的是:

ClientScript.RegisterStartupScript(GetType(), "alert", 
                                  "alert('Please select Alpha or Beta');", true);

ClientScript.RegisterStartupScript包含要在加载时运行的页面中的脚本,而不是过早地放入响应中。最后一个参数:true告诉它将该警报包装在<script>标签中,使您的代码更加清晰。

答案 1 :(得分:1)

处理此问题的最佳方法是使用Javascript并进行客户端验证。如果你真的想要进行服务器端验证,那么你应该使用RegisterStartupScript或者使用顶部的Label更好地显示消息,而不是通过使用Response.Write来显示警告。

HTH

答案 2 :(得分:0)

当您调用Response.Redirect时,会发生在服务器端,而您希望在做出选择后在客户端端进行重定向。

为此,当您使用Response.Write编写脚本时(顺便说一下,有更好的方法可以执行此操作),您将拥有确定用户选择内容的逻辑,然后根据选择,重新查询它们对于数据,或将固有文档对象的location属性设置为要重定向到的URL。