1

いくつかのアイテムを含むパネルバーがあります。アイテムを右クリックして「新しいタブで開く」を選択すると、リンクを新しいタブで開く必要があります。たとえば。私のページが「http:localhost/MyPage」の場合、私のグリッドは次のとおりです。

名前

  • abc
  • bcd
  • cde

2 番目の項目をクリックすると、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");
}

もちろん、リンクがたくさんある場合は非常に面倒です。grid を使用して(質問に書いているときにそれを使用していることを願っています)、コマンド名とコマンド引数のプロパティで行イベントをキャッチできます。

ブラウザのアドレスバーにURLを非表示にするには、URLの書き換えを行う必要があります。URL 書き換えの詳細については、codeprojectおよびmsdnのこれらのページを参照してください。

于 2011-05-16T06:53:47.047 に答える
0

Cookie を設定することもできます。そうすれば、次にユーザーが戻ってきたときに、同じページに戻すこともできます (必要に応じて)。

この記事は、これが適切なオプションであるかどうかを判断する際に役立つ場合があります。

クライアント側で Cookie を設定する必要がある場合は、この記事が役に立ちます。

于 2011-05-16T06:40:41.173 に答える
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 に答える