Проявление совершенно другого вывода на основе строки запроса

damian,

1/да, окаменелость не поддерживает рекурсивный, добавляют. Однако существуют некоторые справедливо просто обходные решения такой как

for /r %i in (*.*) do fossil add "%i"

в Windows, и

find . -type f -print0 | xargs -0 fossil add --

на Unix.

2/я видел сообщение об уродливой декларации, когда Вы добавляете файл с символами неASCII в имени файла. Проблема была исправлена в последней сборке.

С уважением, Petr

5
задан Marc Gravell 24 August 2009 в 07:11
поделиться

6 ответов

Я бы предложил использовать элемент управления MultiView .

Вкратце, вы должны создать два многовидовых «представления», каждое с HTML-кодом, который вы хотите показать. Затем вы можете посмотреть на параметр querystring и соответственно переключить активный вид многовидового представления.

Это дает много преимуществ для Response.Redirect (), как и другие, предлагаемые. Прежде всего, при этом всегда будет генерироваться как минимум два запроса браузера. Кроме того, Response.Redirect () генерирует исключение ThreadAborted за кулисами, что может сбить с толку людей, диагностирующих приложение.

Пример элемента управления MultiView:

ASPX:

<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
4
ответ дан 13 December 2019 в 05:39
поделиться

Вы можете сделать следующее (простое перенаправление):

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
6
ответ дан 13 December 2019 в 05:39
поделиться

У вас действительно есть несколько вариантов, вы можете:

  • Response.Redirect (url) на другую страницу в зависимости от ввода.

  • У вас может быть ASP: Panel с Свойство "visible" имеет значение false и переключает это значение в зависимости от входных данных.

1
ответ дан 13 December 2019 в 05:39
поделиться

Почему бы вместо этого не использовать другие файлы? перенаправить на разные страницы. Это позволило бы избежать повсюду операторов if.

ИЛИ

поместите ваши данные в панели и просто скройте одну или другую panel1.visible = (true / false). Это лучший вариант, если вам нужно разместить все на одной странице aspx.

1
ответ дан 13 December 2019 в 05:39
поделиться

Для справки в будущем вы все равно можете использовать классический способ 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>

Когда страница отображается, отображается "Что?" на странице.

Однако я бы сказал, что это плохая практика и плохой дизайн! Используйте либо предложение womp о мультиэкране, либо перенаправление страницы.

0
ответ дан 13 December 2019 в 05:39
поделиться

Я предпочитаю делать это на странице ASPX с помощью DataBinding:

<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
0
ответ дан 13 December 2019 в 05:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: