Я работаю над страницей FYI с большим списком топовых ссылок. Под этими ссылками верхнего уровня есть больше ссылок, которые обычно выходят на внешние сайты. В настоящее время способ обработки заполнений второго уровня таков: я запрашиваю в своей базе данных все ссылки верхнего уровня, затем создаю неупорядоченный список. Каждый элемент списка имеет формат:
<li class="multicolumnlistitem"><a href="linkpage.aspx?s={0}">Link Text</a></li>
Где {0} - это идентификатор предмета. Я хотел бы устранить необходимость передачи идентификатора в URL. Мне было предложено использовать клиентские сценарии для динамического заполнения скрытого поля значением при нажатии на одну из ссылок, а затем прочитать значение формы на странице ссылок.
Любые идеи / примеры / ресурсы будут с благодарностью.
Спасибо!
Обновление
Вот код, который я получил до сих пор:
<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')
), который возвращает ноль для формы. Я не могу добавить "runat = server" к этой форме, поскольку на странице уже есть форма. Эта существующая ранее форма требуется CMS, которую я использую для правильной работы. Любые идеи о том, куда идти отсюда?
Спасибо!