尝试从ajax静态WebMethod获取asp.net(C#)文本框文本时出错

时间:2012-07-14 08:19:25

标签: javascript jquery asp.net ajax pagemethods

我在asp.net web应用程序中使用ajax htmleditor,所以我试图获取用户在编辑器中输入的文本然后我将该文本发送回客户端javascript函数,该函数将在div中显示文本。但我收到此错误“对象引用未设置为对象的实例。”

首先,我试图通过javascript访问与htmleditorextender链接的文本框的文本,但它不适合我,所以我转移到ajax webmethod但这次我也面临着一个问题。请帮助我。

    [System.Web.Services.WebMethod]
    public static string seteditor()
    {
        String x="";
        try
        {
            Content c = new Content();
            x = c.txteditor.Text;
        }
        catch (Exception ex) { x=ex.Message; }
        return x;
    }

这里,txteditor是asp:textbox的ID,它与ajaxcontroltoolkit htmleditorextender链接。

3 个答案:

答案 0 :(得分:1)

您无法在aspx方法中获取static控件。 如果从jquery调用静态方法意味着页面及其控件甚至不存在。您需要针对您的问题寻找另一种解决方法。

编辑:

我总是将控制值传递给这样的页面方法:

Assume I have two text controls: txtGroupName and txtGroupLevel

......我和Jquery的JS将是:

var grpName = $("#<%=txtGroupName.ClientID%>").val();
var grpLevel = $("#<%= txtGroupLevel.ClientID %>").val();

data: "{'groupName':'" + grpName + "','groupLevel':'" +   grpLevel + "'}",

其中groupName和groupRights是我的webmethod参数。

EDIT2:

包括您的脚本:

<script type="text/javascript" src="<%= ResolveUrl("~/Scripts/jquery-1.4.1.js") %>"></script>  

我建议你使用最新的jquery版本。

答案 1 :(得分:0)

Web方法不会像这样与页面对象或控件层次结构交互。这就是为什么他们首先是静态的。您需要将文本从客户端作为参数传递给Web方法,而不是从文本框中读取。

答案 2 :(得分:0)

这个问题让我连续18个小时不断折磨我首先尝试了javascript而不是webmethod而不是user1042031的建议我尝试了jquery而不是再次尝试了javascript,看看它可以用一行轻松完成代码。

var a = document.getElementById('<%= txteditor.ClientID %>').value;

阅读此stackoverflow文章Getting Textbox value in Javascript

我向在这个问题上回复我的所有人道歉,但我在最初的搜索中没有找到该文章。