私は一流のリンクの大規模なリストがある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で必要です。ここからどこへ行くべきかについて何かアイデアはありますか?
ありがとう!