Asp.net 根据查询字符串显示完全不同的输出
我正在努力学习asp.net(vb.net),但遇到了一些问题。我想根据查询字符串更改页面内容 在经典asp中,我会:Asp.net 根据查询字符串显示完全不同的输出,asp.net,query-string,Asp.net,Query String,我正在努力学习asp.net(vb.net),但遇到了一些问题。我想根据查询字符串更改页面内容 在经典asp中,我会: <% If request.querystring("page") = 1 THEN %> 这似乎只适用于小事情。更改整个页面的最佳方法是什么?您可以执行以下操作(简单重定向): 您也可以这样做(阅读更多): 最后还有一个选项(显示/隐藏页面上的不同面板): 您确实有一些选择,您可以: 根据输入将(url)重定向到不同的页面 您可以将ASP:Panel的“vis
<% If request.querystring("page") = 1 THEN %>
这似乎只适用于小事情。更改整个页面的最佳方法是什么?您可以执行以下操作(简单重定向): 您也可以这样做(阅读更多): 最后还有一个选项(显示/隐藏页面上的不同面板):
您确实有一些选择,您可以:
- 根据输入将(url)重定向到不同的页面
- 您可以将ASP:Panel的“visible”属性设置为false,并根据输入切换该值
- 我建议使用
简而言之,您将创建两个多视图“视图”,每个视图都包含您想要显示的html。然后可以查看querystring参数,并相应地切换多视图的活动视图
这对Response.Redirect()有很多好处,就像其他人建议的那样。首先,这将始终生成至少两个浏览器请求。此外,Response.Redirect()在后台抛出一个ThreadAborted异常,这可能会让诊断应用程序的人感到困惑
多视图控件示例:
ASPX:
为什么不使用不同的文件呢?重定向到不同的页面这样可以避免到处都有if语句。 或
将数据放在面板中,只隐藏一个或另一个面板1.visible=(真/假)。如果您必须将所有内容都放在同一个aspx页面中,那么这是最好的选择。作为将来的参考,您仍然可以使用经典的ASP方式来控制内容。这是我刚才写的一个ASPX页面:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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>
<%
if (3 == 9)
{%>
<span>Hello</span>
<%
}
else
{
%> <span>What?</span > <%
}
%>
</div>
</form>
</body>
</html>
你好
什么?
当页面呈现时,它会在页面上显示“What”
然而,我要说的是,这是糟糕的实践和糟糕的设计!使用womp建议的多视图或页面重定向。我更喜欢在ASPX页面上使用数据绑定:
<asp:PlaceHolder runat="server" ID="Messages">
<asp:Label runat="server" Visible=<%# Request.QueryString("page") = 1 %> Text="Message 1" />
<asp:Label runat="server" Visible=<%# Request.QueryString("page") <> 1 %> Text="Message 2"/>
</asp:PlaceHolder>
更改整个页面是什么意思?所有内容页都可以在Page_Load中完成,也可以在Page_Load中调用其他函数。如果您使用ASP控件,在调用Page_Load后,它将为这些控件(如Button.Click)或多视图(而不是面板)触发事件。看起来很像C#当有人询问VBI时,我花了一段时间,但我改为,它工作得很好!非常感谢你的帮助@我在20秒内被-4击中。。。你的帖子实际上不符合要求。看我的便条,也许不是你。。。每个帖子都输了一票,我注意到你投了6票。。。抱歉。@womp:别担心,我讨厌这里的游戏系统。。。我知道有人在META上排名第四,但当你在20秒内失去4分而没有解释原因时,这是非常可疑的。看看哪些线程产生了这种活动总是很有趣的。。。总是“更容易”的问题不是开玩笑。。。我真的看到它在jQuery上起飞了。甚至看到一些答案2是从1复制粘贴(或键入相同的内容),然后答案1在-1被否决。。。
Sub Page_Load(ByVal Sender as Object, ByVal E as EventArgs)
If Request.QueryString("page") = 1 Then
lblMessage1.Text = "message"
Else
lblMessage1.Text = "message2"
End If
End Sub
If Request.QueryString("page") = 1 Then
Response.Redirect("MyPage1.aspx")
Else
Response.Redirect("MyPage2.aspx")
End If
If Request.QueryString("page") = 1 Then
Server.Transfer("MyPage1.aspx")
Else
Server.Transfer("MyPage2.aspx")
End If
If Request.QueryString("page") = 1 Then
MyPanel1.Visible = true
MyPanel2.Visible = false
Else
MyPanel1.Visible = false
MyPanel2.Visible = true
End If
<form id="form1" runat="server">
<div>
<asp:MultiView ID="MultiView1" runat="server">
<asp:View runat="server">
Hi, this is Page 1
</asp:View>
<asp:View runat="server">
Hi, this is Page 2
</asp:View>
</asp:MultiView>
</div>
</form>
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
If Request.QueryString("page") = "1" Then
MultiView1.ActiveViewIndex = 0
Else
MultiView1.ActiveViewIndex = 1
End If
End Sub
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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>
<%
if (3 == 9)
{%>
<span>Hello</span>
<%
}
else
{
%> <span>What?</span > <%
}
%>
</div>
</form>
</body>
</html>
<asp:PlaceHolder runat="server" ID="Messages">
<asp:Label runat="server" Visible=<%# Request.QueryString("page") = 1 %> Text="Message 1" />
<asp:Label runat="server" Visible=<%# Request.QueryString("page") <> 1 %> Text="Message 2"/>
</asp:PlaceHolder>
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
Messages.DataBind()
End Sub