如何在事件发生之前加载页面

本文关键字:加载 事件 | 更新日期: 2023-09-27 18:14:23

我正在制作这个c#页面,但我不知道如何正确格式化它。

1/我想在查询字符串的结果之前和之后添加标题徽标和页脚文本。我不知道该怎么做。任何帮助都是感激的。

当我执行代码时,查询字符串结果出现在徽标和页脚之前。

2/第二个问题是如何存储Response的值。写在一个变量和显示它在。aspx页面?我想格式化结果,把它们放在漂亮的表布局等。

非常感谢你的帮助。

Error.aspx.cs

using System;
using System.Web.UI;
public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {        
        string ErrorCode = Request.QueryString["ErrorCode"];
        if (ErrorCode != null)
        {
            Response.Write("ErrorCode: " + ErrorCode + "</br>");
        }
        string ErrorName = Request.QueryString["ErrorName"];
        if (ErrorName != null)
        {
            Response.Write("ErrorName: " + ErrorName + "</br>");
        }
        string ErrorMessage = Request.QueryString["ErrorMessage"];
        if (ErrorMessage != null)
        {
            Response.Write("ErrorMessage: " + ErrorMessage);
        }
    }
}

Error.aspx

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link rel="stylesheet" type="text/css" href="StyleSheet.css">
</head>
<body>
    <div class="main-logo">
            <img alt="Logo" src="images/main-logo.jpg" />
    </div>
    <form id="form1" runat="server">                 
    </form>
    <div class="footer">
            <img alt="Footer" src="images/footer.jpg" />
    </div>  
</body>
</html>

这是我在大家的帮助下修复后的新代码:

public partial class _Default : Page
{ 
    protected void Page_Load(object sender, EventArgs e)
    {        
        string ErrorCode = Request.QueryString["ErrorCode"];
        if (ErrorCode != null)
        {
            lbErrorCode.Text = "ErrorCode: " + ErrorCode ;
        }
        string ErrorName = Request.QueryString["ErrorName"];
        if (ErrorName != null)
        {
            lbErrorName.Text = "ErrorName: " + ErrorName;
        }
        string ErrorMessage = Request.QueryString["ErrorMessage"];
        if (ErrorMessage != null)
        {
            lbErrorMessage.Text = "ErrorMessage: " + ErrorMessage;
        }
    }
}

Error.aspx

<form id="form1" runat="server">
            <div class="main-logo">
                <img alt="Logo" src="images/logo.jpg" />
            </div>
            <div><asp:Label ID="lbErrorCode" runat="server" /> </div>
            <div><asp:Label ID="lbErrorName" runat="server" /></div>
            <div><asp:Label ID="lbErrorMessage" runat="server" /></div>
</form>

当我执行没有任何值的页面时,徽标加载得很好,但是当我传递一些示例数据时:/?ErrorMessage=HelloWorld&ErrorCode=500&ErrorName=InvalidInput然后徽标不加载。

有什么想法吗?

提前感谢。

如何在事件发生之前加载页面

我的ASP。. NET WebForms有点生疏,所以希望这能让你开始学习。

首先,您需要使用ASP。. NET Label控件来表示您的文本,而不是使用Response.Write(它将在任何时候将文本转储到响应缓冲区)。尝试在页面中添加Label控件:

<div class="main-logo">
   <img alt="Logo" src="images/main-logo.jpg" />
   <asp:Label ID="Label1" runat="server" />
</div>

你可以在代码后面设置Text属性:

if (ErrorCode != null)
{
   Label1.Text = "ErrorCode: " + ErrorCode;
}

不要使用Response。写作是为了做这类事情。相反,在您想要实现文本的页面上的任何位置放置一个ASP:Literal控件。然后将Literal的Text属性设置为要显示的字符串。

也-不要直接从查询字符串中写入文本到页面

确保您通过Server运行它们。html code优先,否则你的页面会受到各种跨站攻击。

你的页面应该是这样的…

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link rel="stylesheet" type="text/css" href="StyleSheet.css">
</head>
<body>
    <div class="main-logo">
        <img alt="Logo" src="images/main-logo.jpg" />
    </div>
<form id="form1" runat="server">      
      **<ASP:Literal runat="server" id="ltlErrorMessage" />** 
</form>
<div class="footer">
        <img alt="Footer" src="images/footer.jpg" />
</div>  
</body>
</html>

代码应该是这样的:

string ErrorCode = Request.QueryString["ErrorCode"];
    if (ErrorCode != null)
    {
        ltlErrorMessage.Text = Server.HtmlEncode(ErrorCode);
    }

是否需要使用Response.Write ?如果没有,您可以在form1中放置一个标签,并将错误消息传递给标签的Text属性。

<form id="form1" runat="server">    
<asp:Label id="lblError" runat="server"></asp:Label>             
</form>

Page_Load

...
    string ErrorCode = Request.QueryString["ErrorCode"];
            if (ErrorCode != null)
            {
                lblError.Text=Label1.Text+"ErrorCode: " + ErrorCode;
            }
...