我编写了一个输出一些 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>
最佳答案
我已经尝试过了,效果很好。
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());
}
我把它放在我的 View 中,就像这样:
@Html.Test()
我的浏览器工作正常警报 1。
所以我想也许你只是写错了这一行
htmlString.Append("<script type=\"type/javascript\">");
应该是“文本/javascript”
关于c# - 从 HTML Helper 调用 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15570543/