c# - 从 HTML Helper 调用 Javascript

标签 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>

最佳答案

我已经尝试过了,效果很好。

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/

相关文章:

c# - 为什么 "throw ex;"隐藏原始堆栈跟踪

c# - JetBrains Rider 带着 watch 运行

javascript - 将某些数据设置为第一个 Child "data-id"属性?

javascript - Jquery函数检查图像的SRCset是否完成加载

asp.net-mvc - 将文件附加/上传到尚未保存的注释 - 对此的最佳策略是什么?

c# - 复杂的数据库操作

javascript - 从ajax响应增加文本框宽度值不起作用

asp.net-mvc - 使ajax get在auth超时时重定向主页以登录

jquery - 复杂类型的 Ajax 模型绑定(bind)

c# - MVC 部分页面中无法访问 Html 扩展方法