2016-09-27 4 views
1

Ich baue ein Notizen/Kommentar-System für ein Projekt bei der Arbeit. Wenn Sie entweder auf "new" oder "reply" klicken (beide Links, aber ich könnte sie leicht in Buttons umwandeln), öffnet sich ein Bootstrap-Modus, in dem der Benutzer seinen Kommentar/seine Antwort eingeben kann. Ich muss in der Lage sein zu bestimmen, ob der Kommentar neu ist, oder eine Antwort auf jemand anderes, was ich tun möchte, indem ich ein int entsprechend der ID des geantworteten Kommentars setze (0 für einen neuen Kommentar).Pass/Set-Variablen für ein modales Popup

Es scheint, als ob ich in der Lage sein sollte, das OnClick-Ereignis zu verwenden, um die Variable zu setzen, die ich brauche, aber dieses Ereignis scheint nicht zu scheinen, wenn das Modal geöffnet wird.

Modal:

<div class="modal" id="myModal" role="dialog"> 
    <div class="modal-dialog"> 
    <div class="modal-content"> 
     <div class="modal-header">Add a comment</div> 
     <div class="modal-body"> 
     <label><small>Author: </small><%:this.Author %></label><br /> 
     <label><small>Date: </small>Date</label> 
     <asp:TextBox ID="text_M_NOTE" runat="server" TextMode="MultiLine" Height="10em" /> 
     </div> 
     <div class="modal-footer"> 
     <asp:button runat="server" class="NotePopupButton" onclick="Post_Click" Text="Save" /> 
     <asp:button runat="server" class="NotePopupButton" data-dismiss="modal" Text="Cancel" /> 
     </div> 
    </div> 
    </div> 
</div> 

Für die modale Auslösung habe ich versucht, asp Linkbutton verwendet;

<asp:LinkButton data-toggle='modal' data-target='#myModal' runat="server" OnClick="New_Click">New comment...</asp:LinkButton> 

Regelmäßiger Hyperlink;

<a href="#" data-toggle='modal' data-target='#myModal' runat="server" 

Hyperlink mit onserverlick statt Onclick ...

<a href="#" data-toggle='modal' data-target='#myModal' runat="server" onserverclick ="New_Click">New comment...</a> 

Es wurde noch nichts gearbeitet hat. Der Code hinter ist einfach

protected void New_Click(object sender, EventArgs e) 
{ 
    NoteParent = "0"; // 0 Indicates a new comment 
} 

und/oder

protected void Reply_Click(object sender, EventArgs e) 
{ 
    NoteParent = "12"; // Indicates a reply to comment #12 
} 

Ich möchte darauf hinweisen, dass die modale öffnet und speichert den Kommentar nur gut, es wird einfach nicht zählen die NoteParent Variable; es erscheint als null.

Ich vermute, dass, was auch immer Magie Bootstrap hinter den Kulissen tut, verbraucht das Ereignis, bevor mein Code hinter seinem Ding tun kann. Wie kommst du da rum?

+0

Wo ist 'NoteParent' definiert? – KSib

+0

onserverlick sollte auf Serverklick sein. Und solltest du nicht mit der neuen Antwort in Post_Click nicht New_Click umgehen? – smoore4

+0

@KSib 'NoteParent' ist am Anfang der Seitenklasse definiert. Es ist nicht wirklich notwendig. Ich könnte ein verstecktes Textfeld mit festlegen und dann von dort ziehen, wenn ich die Notiz speichere. –

Antwort

0

Sie müssen keine Serveraufrufe durchführen, wenn Sie vor dem Öffnen des Modals eine Variable festlegen müssen, entfernen Sie einfach das Attribut data-toggle und erstellen Sie eine JavaScript-Funktion, um die Schaltfläche zu bearbeiten neuer Kommentar oder eine Antwort, indem Sie eine JavaScript-Variable oder einen versteckten Feldwert festlegen und dann den modalen Dialog pragmatisch anzeigen

+0

Eine Lösung in einem Hybrid zwischen dieser und meiner seltsamen Abneigung gegen JavaScript gefunden; die Attribute 'data-toggle' und' data-target' wurden aus dem Link entfernt und dann onClick geändert, um 'ScriptManager.RegisterStartupScript (this, this.GetType()," mShow "," $ ('# myModal')) zu enthalten. modal ('show'); ", true);' Nun ist es aber seltsam, dass das Einstellen der Varibale (definiert in der Klasse) nicht funktioniert. Verwenden einer Session-Variable oder einer globalen Klasse tat. –

+0

Es scheint, dass die Verwendung eines versteckten Feldes anstelle einer Variablen auch funktioniert. Seltsam. Egal, danke für die Hilfe. –

Verwandte Themen