文本框(和其他控件) - "对象未设置为实例...."

时间:2016-02-07 22:36:15

标签: c# jquery asp.net wcf

我意识到这是一个常见的错误,我已经跟踪了在线提供的这个问题的许多修复,但还没有找到解决方案。

我开发了一个winform应用程序,它从外部网站获取JSON。我点击一个按钮控件,应用程序通过我的json序列化器方法并将结果发布到文本框并附加到textarea。

 public void RenderData(string buttonText)
    {

        if (buttonText == "Start")
        {
            EquationData deserializedData = getData("http://test.ethorstat.com/test.ashx");

            var processed = new ProcessEquation();
            int result = processed.Calculate(deserializedData);

            string res = deserializedData.parm1 + "  " + deserializedData.op + "  " + deserializedData.parm2 +
                " = " + result;
            TextBoxResult.Text = res;

            equation.Append("  " + deserializedData.parm1 + "  " + deserializedData.op + "  " + deserializedData.parm2 +
                " = " + result + '\n');
            TextAreaResults.Value = equation.ToString();
        }
    }

这很好用。但是需求发生了变化,因为应用程序必须每秒轮询一次数据。因此,我创建了一个由jquery脚本调用的wcf Web服务,以便每秒运行一次。

问题是我的控件 - 文本框和文本框 - 生成{"对象引用未设置为对象的实例。"}。我的假设是,我现在正在加载这些控件,因为我从JQuery的ajax函数(?)调用该方法。

$(document).ready(function () {

//while ($('#eThorButton').text != "Stop") {
if ($('#eThorButton').click) {
    $.ajax({
    url: 'Service/eThorService.svc/getUpdate',
    method: 'get',
    dataType: 'json',
    success: function(){
        alert("success");
    },
    error: function (err) {
        alert(err);
    } 
})
//delay(1000);

} 

});

我的控件确实在intellisense中显示,当然,在我运行它时会在Default.aspx上显示。我该如何解决这个问题?

修改

我解决了未设置的对象...'通过实例化新文本框来解决问题:

 public partial class _Default : Page
{
    public static StringBuilder equation = new StringBuilder();
    public TextBox TextBoxTest = new TextBox();

当我调试并逐步执行该值时,文本框呈现但文本框为空。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

使您的方法保持静态并添加注释[WebMethod]并返回结果列表。

[System.Web.Services.WebMethod(EnableSession=true)]
public static List<string> RenderData(string buttonText)
{
       // return result here
}

将带有数据的参数:{buttonText:yourvalue}传递给$ .ajax调用。并通过javascript更改成功函数并在客户端为控件赋值。

success : function(msg){
      if(msg.d!=null){
             $('#<%=TextBoxResult.ClientID%>').val(msg.d[0]);
}
}