1

我有一个面板栏,里面有一些项目。当我右键单击项目并选择“在新选项卡中打开”时,我需要在新选项卡中打开链接。例如。如果我的页面是“ http:localhost/MyPage ”我的网格是:

姓名

  • 美国广播公司
  • bcd
  • cde

当我点击第二个项目时,navigateUrl 将是“ http:localhost/MyPage/?Name=bcd

这工作正常。但我想在 url 中隐藏名称。有没有其他方法,我可以将名称传递到下一页而不在 url 中公开它。我可以使用会话,但不幸的是,我无法将其编写为默认上下文菜单的代码。

4

3 回答 3

2

您可以使用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 重写的更多信息,请访问codeprojectmsdn上的这些页面。

于 2011-05-16T06:53:47.047 回答
0

正如@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;
于 2011-05-16T08:09:59.577 回答
0

您可以设置一个 cookie - 这样下次用户返回时,您甚至可以将他们返回到同一页面(如果您愿意)。

在决定这是否适合您时,您可能会发现这篇文章很有帮助。

如果您需要在客户端设置 cookie,那么本文应该可以帮助您。

于 2011-05-16T06:40:41.173 回答