2017-11-09 5 views
0

Ich habe einen Blog in einem Bootstrap 3 Akkordeon ausgelegt, mit dem die Benutzer die Beiträge erweitern und verkleinern können. Auf jeder Seite werden fünf Beiträge mit den Schaltflächen "Zurück" und "Weiter" angezeigt. Dies funktioniert wunderbar mit einer lästigen Ausnahme.Bewerben Eindeutige ID zu Blog für CKEditor Kommentare

Der Blog ermöglicht auch die Anzeige von Kommentaren unter jedem Beitrag, und mit diesen Kommentaren habe ich einen CKEditor platziert, mit dem jeder Benutzer eigene Kommentare hinzufügen kann.

Da dies ein Akkordeon ist, gibt es technisch gesehen fünf CKEditors auf der Seite, einen für jeden kollabierten Post. Als ich hinter den Daten aus dem Code aufrufen, bekomme ich es so:

name = Request.Form["commentname"]; 
email = Request.Form["comentemail"]; 
comment = CKEditor.InnerText; 
subscribe = Request.Form["subscribecheckbox"].ToString(); 
currentid = Request.Form["blogid"].ToString(); 

Alles dort genau funktioniert, wie ich es brauche die CKEditor.InnerText auszunehmen. Es versucht immer, Text vom FIRST-komprimierten Akkordeon zu ziehen, anstatt von dem, der den Kommentar enthält.

Das obige Snippet befindet sich in einem Button-Klick-Ereignis, also habe ich einen Absender, mit dem ich arbeiten kann.

protected void SubmitButton_Click(object sender, EventArgs e) 

Gibt es eine Möglichkeit, den InnerText des CKEditors mit dem Absender zu verknüpfen?

Hier ist das Kommentarfeld im Akkordeon:

<div id="commentfield" style="display: inline"> 

<input type="text" class="form-control" id="blogid" name="blogid" style="display:none;" value="<%= Id %>" /> 
<p><label class="box-title" for="email">Enter your name and email. Email will NOT be shared.</label></p> 
<p><input type="text" class="form-control" id="commentname" name="commentname" required placeholder="Display Name Here" /></p> 
<p><input type="email" class="form-control" id="comentemail" name="comentemail" required placeholder="[email protected]" /> 
    <input type="email" id="commenttest" style="display:none;" name="commenttest" size="25" /> 
    <input type="text" id="commenttesttxt" style="display:none;" name="commenttesttxt" size="25" /> 
</p> 
<input id="subscribecheckbox" name="subscribecheckbox" type="checkbox" />&nbsp;&nbsp;<label class="box-title lightblue" for="subscribecheckbox">Subscribe to Long-View Living</label>&nbsp;&nbsp;&nbsp;&nbsp;<input id="followcommentscheckbox" name="followcommentscheckbox" type="checkbox" />&nbsp;&nbsp;<label class="box-title lightblue" for="followcommentscheckbox">Be Notified of Followup Comments via EMail</label> 
<br /><br /> 
<textarea runat="server" class="ckeditor" cols="20" id="CKEditor" name="CKEditor" rows="10"></textarea> 
<br /> 

Antwort

0

GELöST: Hinweis - meine Lösung von CKEditor zu Summernote beteiligte Schalt, aber ich glaube nicht, dass diese Lösung ändern sollte. Das gleiche Problem gab es für jeden Editor.

In meinem aspx befindet sich dieser Editor innerhalb einer for-Schleife. Ich durchlaufe eine DataTable mit den fünf Blogeinträgen. Ich wiederhole "i", damit ich diesen Wert verwenden kann, um Elemente in jedem Blogpost eindeutig zu identifizieren.

int i; 
    for (i = 0; i <= (myBlogDataTable.Rows.Count - 1); i++) 

Die Blog-Beiträge sind in diesem for-Schleife, und die Kommentare zu jedem Blog gebunden, das nun auch auf den Wert von i gebunden werden kann.

In diesem Sinne, ich zeige den Summernote Editor und meine Submit-Taste wie unten, erstellen und identifizieren jedes Objekt auf der Grundlage der Wert von i. Dies gibt jedem dieser Objekte einen eindeutigen Griff, den ich im Codebehind greifen kann.

<% if (i == 0) 
    { %> 
     <br /><br /> 
     <textarea runat="server" id="CommentsEditor0" name="CommentsEditor0" class="summernote" ></textarea> 
     <br /> 
     <button runat="server" id="SubmitButton0" value="0" type="submit" class="btn btn-info" onserverclick="SubmitButton_Click">Submit</button> 
<%} 
    else if (i == 1) 
    {%> 
     <br /><br /> 
     <textarea runat="server" id="CommentsEditor1" name="CommentsEditor1" class="summernote" ></textarea> 
     <br /> 
     <button runat="server" id="SubmitButton1" value="1" type="submit" class="btn btn-info" onserverclick="SubmitButton_Click">Submit</button> 
<%} 
    else if (i == 2) 
    {%> 
     <br /><br /> 
     <textarea runat="server" id="CommentsEditor2" name="CommentsEditor2" class="summernote" ></textarea> 
     <br /> 
     <button runat="server" id="SubmitButton2" value="2" type="submit" class="btn btn-info" onserverclick="SubmitButton_Click">Submit</button> 
<%} 
    else if (i == 3) 
    {%> 
     <br /><br /> 
     <textarea runat="server" id="CommentsEditor3" name="CommentsEditor3" class="summernote" ></textarea> 
     <br /> 
     <button runat="server" id="SubmitButton3" value="3" type="submit" class="btn btn-info" onserverclick="SubmitButton_Click">Submit</button> 
       <%} 
    else if (i == 4) 
    {%> 
     <br /><br /> 
     <textarea runat="server" id="CommentsEditor4" name="CommentsEditor4" class="summernote" ></textarea> 
     <br /> 
     <button runat="server" id="SubmitButton4" value="4" type="submit" class="btn btn-info" onserverclick="SubmitButton_Click">Submit</button> 
<%}%> 

Jetzt, in dem Code-Behind, kann ich etwas sehr ähnliches tun, um die Werte greifen Ich mag:

string myButtonID = ((HtmlButton)sender).Attributes["Value"].ToString(); 
switch (myButtonID) 
{ 
    case "0": 
     myCurrentBlogID = myStringUtility.GetField(currentid, ",", 1); 
     comment = CommentsEditor0.InnerText; 
     break; 
    case "1": 
     myCurrentBlogID = myStringUtility.GetField(currentid, ",", 2); 
     comment = CommentsEditor1.InnerText; 
     break; 
    case "2": 
     myCurrentBlogID = myStringUtility.GetField(currentid, ",", 3); 
     comment = CommentsEditor2.InnerText; 
     break; 
    case "3": 
     myCurrentBlogID = myStringUtility.GetField(currentid, ",", 4); 
     comment = CommentsEditor3.InnerText; 
     break; 
    case "4": 
     myCurrentBlogID = myStringUtility.GetField(currentid, ",", 5); 
     comment = CommentsEditor4.InnerText; 
     break; 
}