我正在研究一个包含大量顶级链接列表的仅供参考的页面。在这些顶级链接下,通常会有更多指向外部网站的链接。目前,我处理填充第二层的方式是这样的:我在数据库中查询所有顶层链接,然后构建一个无序列表。每个列表项的格式为:
<li class="multicolumnlistitem"><a href="linkpage.aspx?s={0}">Link Text</a></li>
其中 {0} 是项目的 ID。我想消除在 URL 中传递 ID 的需要。有人建议我使用客户端脚本在单击其中一个链接时使用值动态填充隐藏字段,然后读取链接页面上的表单值。
任何想法/示例/资源将不胜感激。
谢谢!
更新
这是我到目前为止得到的代码:
<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 需要此预先存在的表单才能正常运行。关于从这里去哪里的任何想法?
谢谢!