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

时间:2015-09-24 20:33:22

标签: c# css asp.net

我正在处理这个C​​#页面,但我不知道如何正确格式化它。

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

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

2 /我的第二个问题是如何将Response.Write的值存储在变量中并将其显示在.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&amp; ErrorCode = 500&amp; ErrorName = InvalidInput,那么徽标不会加载。

请问好吗?

提前致谢。

3 个答案:

答案 0 :(得分:1)

我的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;
}

答案 1 :(得分:0)

是否需要使用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;
            }
...

答案 2 :(得分:0)

不要使用Response.Write来做这种事情。而是在要实现文本的页面上的任何位置放置ASP:Literal控件。然后将Literal的Text属性设置为您要显示的字符串。

也是 - 不要直接在QUERYSTRING中写入文字

请确保先通过Server.HtmlEncode运行它们,否则您的页面会对各种XSS漏洞开放。

您的页面看起来应该是这样的......

<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);
    }