razor
  • html-helper
  • google-visualization
  • 2012-11-13 76 views 0 likes 
    0

    我看這裏的例子:@Html圖片助手顯示的圖像作爲HTML代碼

    http://tinyurl.com/au3vydl

    這個例子使用一個輔助使用剃刀來顯示一個谷歌的圖表圖像:

    @Html.DrawChart("p", "40,60,40", "250x100", "Pie Chart")

    這種方法組裝正確的代碼返回圖表:

    <img src='http://chart.apis.google.com/chart?chs=250x100&amp;chd=t:40,60,40&amp;cht=p&amp;chl=Pie Chart' />

    但是在瀏覽器中顯示爲html代碼,而不是實際的圖像。如果我將幫助器輸出的完全相同的代碼複製到視圖中,它顯示正常。是否需要將@ Html.Helper的輸出更改爲代碼而不是文字字符串?

    助手代碼:

    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Web; 
    using System.Text; 
    using System.Web.Mvc; 
    
    namespace SolarCars.Helpers 
    { 
        public static class GoogleChart 
        { 
         /// <summary> 
         /// Draws the chart. 
         /// </summary> 
         /// <param name="helper">The helper.</param> 
         /// <param name="chartType">Type of the chart.</param> 
         /// <param name="chartData">The chart data.</param> 
         /// <param name="chartSize">Size of the chart.</param> 
         /// <param name="chartLabel">The chart label.</param> 
         /// <returns></returns> 
         public static string DrawChart(this HtmlHelper helper, string chartType, string chartData, string chartSize, string chartLabel) 
         { 
          StringBuilder chartHtml = new StringBuilder("<img src='http://chart.apis.google.com/chart?chs="); 
          chartHtml.Append(chartSize); 
          chartHtml.Append("&amp;chd=t:"); 
          chartHtml.Append(chartData); 
          chartHtml.Append("&amp;cht="); 
          chartHtml.Append(chartType); 
          chartHtml.Append("&amp;chl="); 
          chartHtml.Append(chartLabel); 
          chartHtml.Append("' />"); 
    
          return chartHtml.ToString(); 
         } 
        } 
    } 
    

    回答

    1

    如果在@或<%返回字符串:封鎖的結果將被自動轉義。這是(我認爲)MVC1和MVC2之間的變化。解決這個問題的方法是讓你的幫助器方法返回一個IHtmlString的實例。

    public static IHtmlString DrawChart(...) 
    

    然後切換你的回報返回一個新HtmlString

    return new HtmlString(chartHtml.ToString()); 
    
    +0

    這正是我所需要的東西。謝謝! –

    相關問題