代码之家  ›  专栏  ›  技术社区  ›  user279521

验证后刷新ASP.NET网页

  •  1
  • user279521  · 技术社区  · 15 年前

    我有一个ASP.NET网页(C 2008),在那里用户将输入一个EmployeeID,当他们从文本框中制表时(页面在codebehind中执行一个验证代码块),他们会得到一个消息框,提示他们从下拉列表框中选择两个值之一。

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

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

    显示提示后,用户单击“确定”并返回页面,页面上的文本将出现扭曲(标签中的文本的大小较大,标签被换行等)

    我试着把 Response.Redirect("UserProfileMaint.aspx"); 在codebehind中的messagebox之后,但现在不显示该messagebox;

    这是我的尖叫:

    • 用户输入EmployeeID
    • 如果用户未选择alpha或 测试版,然后显示消息框
    • 如果用户选择了alpha或beta, 然后不显示消息框

    我希望显示消息框验证,并确保页面上文本的外观不被扭曲。我该怎么做?

    3 回复  |  直到 15 年前
        1
  •  5
  •   Nick Craver    15 年前

    直接写入输出流,将其置于 <html> 这会使浏览器非常困惑(导致您的文本问题)。您要做的是:

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

    ClientScript.RegisterStartupScript 将脚本包含在要加载而不是过早放入响应的页面中。最后一个论点: true 告诉它把警报包起来 <script> 标签,保持代码干净。

        2
  •  1
  •   Raja    15 年前

    处理这一问题的最佳方法是使用JavaScript并进行客户端验证。如果您真的想进行服务器端验证,那么不要使用response来显示警报。write应该使用registerstartupscript,或者最好使用顶部的标签来显示消息。

    高温高压

        3
  •  0
  •   casperOne    15 年前

    当您调用response.redirect时,它发生在服务器端,而您希望重定向发生在 客户机 选择后的边。

    为此,当您使用response.write编写脚本时(顺便说一句,有更好的方法可以做到这一点),您可以使用逻辑来确定用户选择了什么,然后根据所选内容,为数据重新查询它们,或者将固有文档对象的location属性设置为ur你想重定向到。

    推荐文章