我意识到这是一个常见的错误,我已经跟踪了在线提供的这个问题的许多修复,但还没有找到解决方案。
我开发了一个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();
当我调试并逐步执行该值时,文本框呈现但文本框为空。我该如何解决这个问题?
答案 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]);
}
}