Как скрыть параметр строки запроса в URL - PullRequest
1 голос
/ 16 мая 2011

У меня есть панель с некоторыми элементами. Когда я щелкаю правой кнопкой мыши по элементам и выбираю «открыть в новой вкладке», мне нужно открыть ссылку в новой вкладке. Например, если моя страница " http: localhost / MyPage " Моя сетка:

Имя

  • abc
  • BCD
  • CDE

Когда я нажимаю на второй элемент, navigateUrl будет иметь вид " http: localhost / MyPage /? Name = bcd "

Это отлично работает. Но я хочу спрятать имя в URL. Есть ли другой способ, я могу передать имя на следующую страницу, не выставляя его в URL. Я мог бы использовать сеансы, но, к сожалению, я не могу написать его как код для контекстного меню по умолчанию.

Ответы [ 3 ]

2 голосов
/ 16 мая 2011

Вы можете использовать LinkButton объектов. Они будут выполнять обратную передачу, а затем вы сможете перенаправить запросы на нужные страницы.

ASPX:

<asp:linkbutton id="lnkabcd" runat="server" text="abcd" onclick="lnkabcd_clicked"/>

C #:

public void linkabcd_clicked(object sender, EventArgs e)
{
    Response.Redirect("URL OF TARGET PAGE");
}

Конечно, будет очень громоздко, если у вас много ссылок. Вы можете использовать сетку (надеюсь, что вы используете ее, когда пишете в своем вопросе) и перехватить событие строки со свойствами имени команды и аргумента команды.

Чтобы скрыть URL-адрес в адресной строке браузера, необходимо выполнить перезапись URL-адреса. Для получения дополнительной информации о перезаписи URL посетите эти страницы в codeproject и msdn .

0 голосов
/ 16 мая 2011

Как сказал @TheVillageIdiot, переписывание URL-адресов - лучший подход.Но вы также можете использовать кросс-страничку .Проверьте это:

Разметка

<asp:HiddenField ID="HiddenField1" runat="server" ClientIDMode="Static" />

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <asp:LinkButton ID="LinkButton1" runat="server" PostBackUrl="~/Second.aspx" Text='<%# Bind("Text") %>' OnClientClick='<%# "LinkButton1_Click(\"" + Eval("Value") + "\")" %>' />
    </ItemTemplate>
</asp:Repeater>

<script type="text/javascript">
    function LinkButton1_Click(v) {
        document.getElementById('HiddenField1').value = v;
    }
</script>

Как вы можете видеть в предыдущем фрагменте кода, вы должны добавить скрытое поле для сохранения выбранного элемента с помощьюпростой JavaScriptТакже я определил свойство, называемое SelectedValue, чтобы получить значение скрытого поля на другой стороне.

Код позади

protected void Page_Load(object sender, EventArgs e)
{
    Repeater1.DataSource = new[] {
        new { Text = "Item 1", Value = "Item 1" },
        new { Text = "Item 2", Value = "Item 2" },
        new { Text = "Item 3", Value = "Item 3" }
    };
    Repeater1.DataBind();
}

public string SelectedValue
{
    get { return HiddenField1.Value; }
}

Вторая страница

Добавьте следующую директиву на страницу назначения.

<%@ PreviousPageType VirtualPath="~/Default.aspx" %>

Наконец, у вас есть доступ к предыдущей странице через свойство PreviousPage класса Page.

string value = ((_Default)this.PreviousPage).SelectedValue;
0 голосов
/ 16 мая 2011

Вы можете установить cookie - таким образом, когда в следующий раз пользователь вернется, вы даже можете вернуть его на ту же страницу (если хотите).

Вы можете найти эту статью полезно при принятии решения, если это хороший вариант для вас.

Если вам нужно установить cookie на стороне клиента, то эта статья должна вам помочь.

...