在此代码中,为什么response.write的文本出现在标签中的文本之前?这是背后的代码:
protected void Page_Load(object sender, EventArgs e)
{
HttpRequest request = Request;
if (request.QueryString["game"] == "cstrike") Label1.Text = "15000 $";
if (request.QueryString["game"] == "diablo3") Label1.Text = "25000 $";
if (request.QueryString["game"] == "pes2012") Label1.Text = "30000 $";
if (request.QueryString["game"] == "splinterCellConviction") Label1.Text = "75000 $";
Response.Write("<span>Query:<span>" + request.QueryString.ToString());
}
例如,输出如下所示:
查询: 游戏=的cstrike $ 15000
为什么按此顺序输出? “asp标签控件”首先是页面上的所有控件:
我希望输出看起来像这样:
15000 $ 查询: 游戏=的cstrike
这是asp.net页面代码前面:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Pricing.aspx.cs" Inherits="queryStringPlay.Pricing" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
</div>
</form>
</body>
</html>
答案 0 :(得分:1)
编译器执行您告诉它的所有操作...您可以通过调试器中的代码来验证...在这种情况下,您正在使用Response.Write
并将其发送到客户端...你之前做的事情不会发送到客户端,因为使用Response.Write
你基本上告诉ASP.NET运行时“忽略”它们!
该代码应该完成什么?
答案 1 :(得分:1)
您对response.write的调用正在抢占页面的正常呈现。以下是asp.net http://msdn.microsoft.com/en-us/library/ms178472.aspx
中事件的顺序您对response.write的调用基本上是说“继续将此值写入流而不等待渲染管道的其余部分发生”。我认为这是一个糟糕的形式,你应该在包含15000 $值的页面上放置一个文字。然后让您的代码设置该文字的文本值。