0

現在listview、Accessデータベースの「コテージ」レコードを表示するASP.NETWebページがあります。各コテージの名前はハイパーリンクとして表示されるため、クリックすると別のWebページに移動します。

<li style="">Name:
     <asp:Hyperlink ID="Cottage_NameLabel" NavigateURL="~/Cottage.aspx"
         runat="server" Text='<%# Eval("Cottage_Name") %>' />
     <br />

これは、ハイパーリンクを選択するときに完全に正常に機能します。システムに実行させたいのは、公に宣言された変数(モジュールで設定)の値をCottage_Name、選択したハイパーリンクの値に設定することです。つまり、「cottage1」というハイパーリンクをクリックすると、パブリック変数が「cottage1」に設定され、ナビゲートURLによって次のWebページが開きます。

誰かが私がこれをするのを手伝ってくれるなら本当に感謝します!

4

2 に答える 2

2

ハイパーリンクの代わりにLinkBut​​tonを使用するだけです...クリックイベントをキャッチして、好きなことをしてください...

例えば:

<asp:LinkButton  ID="Cottage_NameLabel" runat="server"  Text="whatever" onclick="Cottage_NameLabel_Click" />

次に、CodeBehindで:

    protected void Cottage_NameLabel_Click(object sender, EventArgs e)
    {
        LinkButton btn = (LinkButton)sender;
        Session["MyCottageName"] = btn.Text;
        Response.Redirect("Cottage.aspx");
    }

Cottage.Aspxページで、次のようにSession変数の値を確認できます。

protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["MyCottageName"] != null)
        {
            string name = (String)Session["MyCottageName"];
            ... 
        }
于 2013-02-27T16:10:23.660 に答える
0

名前をクエリ文字列変数としてページに渡すことができます。このルートを使用する場合は、コテージ名をURLエンコードする必要があります。

<a href='/Cottage.aspx?name=<%# Server.UrlEncode(DataBinder.Eval(Container.DataItem, "Cottage_Name")) %>'><%# Eval("Cottage_Name") %></a>

そして、cottage.aspxで、コテージ名を取得できます。

Dim cottageName As String = Request.QueryString("name")

これは、ポストバックとリダイレクトの必要性を排除するため、ボタンまたは他のポストバックソリューションよりも望ましいでしょう。

于 2013-02-27T16:28:00.893 に答える