2009-07-21 5 views
1

Ich arbeite an einer FYI-Seite, die eine große Liste von Top-Tier-Links hat. Unter diesen Top-Tier-Links gibt es mehr Links, die normalerweise auf externe Websites gehen. Momentan ist die Art, wie ich die zweite Ebene bevölkert, wie folgt: Ich frage meine Datenbank nach allen Links der obersten Ebene ab, dann konstruiere ich eine ungeordnete Liste. Jeder Listeneintrag hat das folgende Format:Wie könnte ich ein verstecktes Feld füllen, wenn auf einen Link geklickt wird?

<li class="multicolumnlistitem"><a href="linkpage.aspx?s={0}">Link Text</a></li> 

Dabei ist {0} die ID des Elements. Ich möchte die Notwendigkeit beseitigen, die ID in der URL zu übergeben. Es wurde mir vorgeschlagen, dass ich clientseitige Skripte verwende, um ein verstecktes Feld dynamisch mit dem Wert zu füllen, wenn auf einen der Links geklickt wird, und dann den Formularwert auf der Linkseite zu lesen.

Alle Ideen/Beispiele/Ressourcen werden sehr geschätzt.

Danke!

aktualisieren

Hier ist der Code, den ich nach unten so weit bekommen haben:

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

Die einzige verbleibende Hürde die Javascript ist (entweder in dem obigen Format, oder das Original document.getElementById('stateform')) für null zurück die Form. Ich kann "runat = server" nicht zu diesem Formular hinzufügen, da bereits ein Formular auf der Seite vorhanden ist. Dieses vorher existierende Formular wird vom CMS benötigt, um korrekt zu funktionieren. Irgendwelche Ideen, wohin du von hier aus gehst?

Danke!

+1

es nicht tun. Andernfalls wird Ihre Seite wertlos sein, wenn Javascript deaktiviert ist. –

+0

Guter Punkt. Werde dies prüfen. – Anders

Antwort

2

Meinen Sie so etwas wie:

<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

So etwas, ja. Allerdings reicht es noch nicht einreichen. Ich werde sehen müssen, ob ich sehen kann warum nicht und dann werde ich zurück posten. – Anders

+0

FireBug sagt: "document.getElementById (" idfield ") ist null" – Anders

+0

Und nach der Quellansicht: . Muss ich den zusätzlichen Text berücksichtigen, den ASP in das ID-Feld stellt? – Anders

Verwandte Themen