1

私は一流のリンクの大規模なリストがあるFYIページに取り組んでいます。これらの最上位のリンクの下には、通常は外部のWebサイトに送信されるリンクがさらにあります。現在、第2層への入力を処理する方法は、次のとおりです。データベースにすべての最上位リンクを照会してから、順序付けされていないリストを作成します。各リストアイテムの形式は次のとおりです。

<li class="multicolumnlistitem"><a href="linkpage.aspx?s={0}">Link Text</a></li>

ここで、{0}はアイテムのIDです。URLでIDを渡す必要をなくしたいと思います。クライアント側のスクリプトを使用して、リンクの1つがクリックされたときに非表示のフィールドに値を動的に入力してから、リンクページのフォームの値を読み取ることをお勧めしました。

任意のアイデア/例/リソースをいただければ幸いです。

ありがとう!

アップデート

これが私がこれまでに得たコードです:

<form id="stateform" action="StateFyi/StateFyiView.aspx" method="post">
<p>
    <input type="hidden" id="idfield" name="s" runat="server" />
    <%
        GSDataLayer.Fyi.States StateManager = new GSDataLayer.Fyi.States();

        var stateList = StateManager.GetStateList();

        foreach (GSDataLayer.Fyi.States.State s in stateList)
        {
            stateListOutput.Text +=
            string.Format("<li class=\"multicolumnlistitem\"><a href=\"javascript:document.getElementById('{0}').value='{1}';document.stateform.submit();\">{2}</a></li>\n",
            new string[] {idfield.ClientID, s.ID.ToString(), s.Name});
        }        
    %>
    <ul class="multicolumnlist">
        <asp:Literal ID="stateListOutput" runat="server" Text="No Items!" />
    </ul>
</p>
</form>

残っている唯一のハードルは、javascript(上記の形式または元の形式のいずれかdocument.getElementById('stateform'))がフォームに対してnullを返すことです。ページにすでにフォームがあるため、このフォームに「runat=server」を追加できません。この既存のフォームは、正しく機能するために使用しているCMSで必要です。ここからどこへ行くべきかについて何かアイデアはありますか?

ありがとう!

4

1 に答える 1

3

次のような意味ですか?

<form id="myform" action="linkpage.aspx" method="POST">
<input type="hidden" id="idfield" name="s" />
</form>
...
<li class="multicolumnlistitem"><a href="javascript:document.getElementById('idfield').value='0';document.getElementById('myform').submit();">Link Text</a></li>
于 2009-07-21T14:36:14.323 に答える