2016-04-11 9 views
0

Ich möchte einen Colorpicker auf einer MVC5-Anwendung anzeigen. Diese Funktion funktioniert, wenn sie manuell eingegeben und für jede Seite angepasst wird, die sie verwendet. Offensichtlich ist dies übermäßig duplizierter Code, also habe ich eine Utils-Methode erstellt, um die Daten zu generieren. Hier ist die Definition für diese Methode:Was könnte ViewData ["x"] verursachen. ToString funktioniert nicht?

public static string GetColorsList() 
    { 
     string colorsList = "<option style=\"color:gray\" value=\"null\">select color</option>" + 
          "<option style=\"color:azure\" value=\"Azure\">Azure</option>" + 
          "<option style=\"color:blue\" value=\"Blue\">Blue</option>" + 
          "<option style=\"color:cyan\" value=\"Cyan\">Cyan</option>" + 
          "<option style=\"color:green\" value=\"Green\">Green</option>" + 
          "<option style=\"color:magenta\" value=\"Magenta\">Magenta</option>" + 
          "<option style=\"color:orange\" value=\"Orange\">Orange</option>" + 
          "<option style=\"color:red\" value=\"Red\">Red</option>" + 
          "<option style=\"color:violet\" value=\"Violet\">Violet</option>" + 
          "<option style=\"color:yellow\" value=\"Yellow\">Yellow</option>"; 

     return colorsList; 
    } 

Der Grund, warum ich eine Zeichenfolge anstelle eines IEnumerable ist, dass ein JS-Methode neue Daten hinzufügt (dh eine neue Zeile in der Tabelle erstellen) auf die Seite mit:

$(#tablename tbody).append(newcontent); 

wo neuer Inhalt eine Zeichenfolge des einzufügenden HTML ist. Idealerweise könnte ich einfach eine Html.DropDownList erstellen, um den Inhalt der Auswahl anzuzeigen, aber dies liefert kein zeichenkettenfreundliches Ergebnis.

Was ich will erreichen: nehmen colorsList, setzen in in Viewdata [ "x"], drehen Viewdata [ "x"] in einen String und concat dieser Zeichenfolge mit anderen Inhalten, die in newContent gehört. .

Viewdata [ "x"] ToString() ergibt folgendes Ergebnis:

&lt;option style=&quot;color:gray&quot; value=&quot;null&quot;&gt;select 
color&lt;/option&gt;&lt;option style=&quot;color:azure&quot; value=&quot; 
Azure&quot;&gt;Azure&lt;/option&gt;&lt;option style= 
&quot;color:blue&quot; 
value=&quot;Blue&quot;&gt;Blue&lt;/option&gt;&lt;option style=&quot; 
color:cyan&quot; value=&quot;Cyan&quot;&gt;Cyan&lt;/option&gt;&lt; 
option style=&quot;color:green&quot; value=&quot;Green&quot;&gt; 
Green&lt;/option&gt;&lt;option style=&quot;color:magenta&quot; value= 
&quot;Magenta&quot;&gt;Magenta&lt;/option&gt;&lt;option style= 
&quot;color:orange&quot; value=&quot;Orange&quot;&gt;Orange&lt;/option 
&gt;&lt;option style=&quot;color:red&quot; value=&quot;Red&quot;&gt; 
Red&lt;/option&gt;&lt;option style=&quot;color:violet&quot; value= 
&quot;Violet&quot;&gt;Violet&lt;/option&gt;&lt;option style= 
&quot;color:yellow&quot; value=&quot;Yellow&quot;&gt;Yellow&lt;/option&gt;); 

Die Abhilfe ist hier laufen:

 colorpickerContent = colorpickerContent.replace("$lt;", "<"); 
     colorpickerContent = colorpickerContent.replace("$gt;", ">"); 
     colorpickerContent = colorpickerContent.replace("&quot;", "\""); 

Damit alle die richtigen Zeichen bestehen. Wenn das Programm ausgeführt wird, löst es einen Syntaxfehler aus, da die Ausgabe nicht mit den Anführungszeichen beginnt, die als Zeichenfolge betrachtet werden müssen. Irgendwelche Vorschläge, wie ich ViewData ["x"] zu einer brauchbaren Zeichenkette machen kann? Ich habe JSON.stringify() versucht, aber ähnliche Ergebnisse gefunden.

Antwort

1

Sie suchen nach dem HtmlString, dass man nicht entkommen kann.

+0

Danke, das ist in der Tat, was ich brauchte! –

Verwandte Themen