Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 根据查询字符串显示完全不同的输出_Asp.net_Query String - Fatal编程技术网

Asp.net 根据查询字符串显示完全不同的输出

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

我正在努力学习asp.net(vb.net),但遇到了一些问题。我想根据查询字符串更改页面内容

在经典asp中,我会:

<% 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