如何在事件发生之前加载页面
本文关键字:加载 事件 | 更新日期: 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;
}
...