如何在托管控件的页面上调用ASP.Net Custom控件的嵌入式资源中的JavaScript函数?

时间:2013-10-14 17:54:17

标签: javascript asp.net

我有一个html编辑器自定义控件,我一直在使用它有一个基本的撤销/重做功能,可以很好地适应编辑器中的所有功能。 undo / redo函数使用2个堆栈(分别命名为UndoStack和RedoStack),当修改编辑器的text属性的其他编辑器函数之一出现在UndoStack上时。对于可视化,单击“撤消”时,将调用pop,并将该值存储到重做堆栈中。

但是,编辑器还与一些页面上的AJAX函数交互,允许用户插入存储在我们数据库中的已写入文本。我想在这里完成的是包含用于在页面上运行编辑器的JavaScript,并调用将文本从页面推送到撤消堆栈所需的函数。

作为旁注,我使用Rob2211在Embedded dll resources上提供的解决方案来获取相关页面上的脚本文件,但我想知道如何从中调用函数,因为它一直在说我想调用的函数(pushUndoStack(),原谅缺乏创造力)是未定义的。

由于

P.S。我通常使用C#编写代码,但有些项目是在VB.NET中

代码段:在页面上

注册页面指令

<%@ Register Assembly="WebControl.HtmlEditor" Namespace="WebControl.HtmlEditor"      TagPrefix="ec" %>  

抓取HtmlEditor.js函数的代码

<script type="text/javascript" src="<%= HtmlEditor.Resource.GetClientScript(Me.Page, "HtmlEditor.js")%>"></script>

代码片段:在C#文件中 资源类

public class Resource
        {
            public static string GetClientScript(Page p, string file)
            {
                return p.ClientScript.GetWebResourceUrl(typeof(Resource), typeof(Resource).Namespace + ".Scripts." + file);
            }
        }

装配参考:

[assembly: WebResource("WebControl.HtmlEditor.Scripts.HtmlEditor.js", "text/javascript")]

原型功能:(包含以下撤消/重做功能)

WebControl.HtmlEditor.HtmlEditor.prototype =
{
.
.
.
}

来自嵌入式JavaScript文件:所有撤消/重做相关功能。

getUndoStack: function () {
        return this.undoStack;
    },

    pushUndoStack: function (value) {
        this.undoStack.push(value);
    },

    popUndoStack: function () {
        return this.undoStack.pop();
    }, 

    getRedoStack: function () {
        return this.redoStack;
    },

    setRedoStack: function (value) {
        this.redoStack = value;
    },

    clearRedoStack: function () {
        var redoStack = this.getRedoStack();
        redoStack = new Array();
        this.setRedoStack(redoStack);
    },

    pushRedoStack: function (value) {
        this.redoStack.push(value)
    },

    popRedoStack: function () {
        return this.redoStack.pop();
    }

1 个答案:

答案 0 :(得分:0)

我使用jQuery解决了这个问题。由于我需要的JavaScript函数嵌入在HTML编辑器自定义控件中,我需要的功能已经可用于页面,它只需要一种方法来实现它。使用$ find('ControlID')方法,我能够在DOM树中搜索“Editor”的ID,并访问控件中包含的所有内容,在本例中是名为pushUndoStack()的函数。让我得出这个结论的是该项目的另一部分,它完成了该项目的拼写检查部分。

感谢@AndrewWalters和@TsanyoTsanev的帮助。

相关问题