Как я могу заполнить скрытое поле при нажатии на ссылку? - PullRequest
1 голос
/ 21 июля 2009

Я работаю над страницей 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, которую я использую для правильной работы. Любые идеи о том, куда идти отсюда?

Спасибо!

1 Ответ

2 голосов
/ 21 июля 2009

Вы имеете в виду что-то вроде:

<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>
...