单击链接时如何填充隐藏字段?

时间:2009-07-21 14:32:45

标签: c# asp.net javascript client-side

我正在开设一个包含大量顶层链接的FYI页面。在这些顶级链接下,通常会向外部网站发送更多链接。目前,我处理填充第二层的方式是这样的:我在数据库中查询所有顶层链接,然后构建一个无序列表。每个列表项的格式为:

<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所必需的。关于从哪里去的任何想法?

谢谢!

1 个答案:

答案 0 :(得分:2)

你的意思是:

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