我编写了一个输出一些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>
答案 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”