2016-04-11 12 views
0

MVC5 uygulamasında bir colorpicker görüntülemek istiyorum. Bu özellik, elle yazılan ve onu kullanan her sayfa için uyarlanmışsa çalışır. Açıkçası, bu aşırı derecede çoğaltılan koddur, böylece verileri oluşturmak için bir Utils yöntemi oluşturdum.ViewData neden olabilir ["x"] ToString çalışmıyor?

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

bir IEnumerable yerine bir dize döndürür nedeni JS yöntemini kullanarak sayfaya (yani tablodaki yeni bir satır oluşturun) yeni verileri ekler olmasıdır:

İşte o yöntemi tanımıdır Yeni içeriğin eklenecek HTML dizesi olduğu
$(#tablename tbody).append(newcontent); 

. İdeal olarak, seçici içeriğini görüntülemek için bir Html.DropDownList oluşturabilirdim, ancak bu bir dize dostu sonuç döndürmez.

Ben başarmak istiyorum Ne: bir dize dönüşebilir, ViewData içinde [ "x"] koymak, colorsList almak ViewData [ "x"] ve newcontent aittir diğer içeriğe sahip olduğunu dize concat. .

ViewData [ "x"] ToString() aşağıdaki sonucu verir:

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

Bu nedenle tüm uygun karakterler var olduğunu: Burada

&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;); 

geçici çözüm çalıştırmaktır. Çalışırken, program bir dizge hatası atar çünkü çıktı, bir dizgeyi dikkate almak için gereken tırnak işaretleri ile başlamaz. ViewData ["x"] nasıl çalışabilir bir dizge oluşturabileceğime dair herhangi bir öneriniz var mı? JSON.stringify() 'ı denedim ancak benzer sonuçlar buldum.

cevap

1

HtmlString adlı kişiyi kaçırmak istemiyorsunuz.

+0

Teşekkürler, bu gerçekten ihtiyacım olan şey! –