从HTML Helper调用Javascript

时间:2013-03-22 12:38:26

标签: c# javascript asp.net-mvc html-helper

我编写了一个输出一些javascript的自定义HTMLHelper。 javascript正在添加到页面中,但是在页面加载时它没有运行。如果我将生成的JS复制/粘贴到Chrome的控制台窗口中,则脚本可以正常运行。我想做的是什么?

public static HtmlString CreatePieChart(this HtmlHelper helper, string divId, int width, Collection<PieChartSeriesItem> series)
    {            
        if (width < 1)
        {
            throw new System.ArgumentException("Width of pie chart must be greater than zero");
        }

        StringBuilder htmlString = new StringBuilder();
        htmlString.Append("<script type=\"type/javascript\">");
        htmlString.Append("$(window).load(\"#");
        htmlString.Append(divId);
        htmlString.Append("\").kendoChart({");
        htmlString.Append("title: { visible: false },");
        htmlString.Append("chartArea: { background: \"transparent\", width: ");
        htmlString.Append(width.ToString(CultureInfo.InvariantCulture));
        htmlString.Append(" },");
        htmlString.Append("legend: { visible: false },");
        htmlString.Append("seriesDefaults: { labels: { visible: false } },");
        htmlString.Append("series: [{");
        htmlString.Append("type: \"pie\",");
        htmlString.Append("padding: 0,");
        htmlString.Append("overlay: { gradient: \"none\"},");
        htmlString.Append("data: [");

        htmlString.Append(CreatePieChartDataSeriesString(series));

        htmlString.Append("]");
        htmlString.Append("}],");
        htmlString.Append("tooltip: { visible: true, template: \"#= category # (#= value #%)\"}");
        htmlString.Append("});");
        htmlString.Append("</script>");

        return new HtmlString(htmlString.ToString());
    }

这是页面中的电话

<div id="piechart">
    @Html.Partial("_PieChart", Model.BalancePieChartData)
</div>

1 个答案:

答案 0 :(得分:3)

我试过这个并且工作正常。

public static MvcHtmlString Test(this HtmlHelper htmlHelper)
    {
        StringBuilder htmlString = new StringBuilder();
        htmlString.Append("<script type=\"text/javascript\">");
        htmlString.Append("alert(1)");
        htmlString.Append("</script>");
        return new MvcHtmlString(htmlString.ToString());
    }

我把它放在我的身体视图中就像这样:

@Html.Test()

我的浏览器工作正常警报1。

所以我想也许你只是写错了这行

htmlString.Append("<script type=\"type/javascript\">");

应该是“text / javascript”