2009-07-21 125 views
1

我正在製作一個帶有大量頂級鏈接列表的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

不要這樣做。否則,您的網站將無法使用JavaScript。 – 2009-07-21 15:52:22

+0

好點。將考慮這一點。 – Anders 2009-07-21 17:31:29

回答

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

就是這樣。但是,它尚未提交。我將不得不看看我爲什麼不能看到,然後我會回覆。 – Anders 2009-07-21 14:52:57

+0

FireBug說:「document.getElementById(」idfield「)爲空」 – Anders 2009-07-21 15:00:10

+0

並根據源視圖: 。我是否必須容納ASP放在ID字段中的額外文本? – Anders 2009-07-21 15:02:37