【问题标题】:Webmethod and complex object type problemsWeb方法和复杂对象类型问题
【发布时间】:2012-05-10 17:46:34
【问题描述】:

我在 .NET 中有一个 Web 方法,它返回一个对象列表。

[System.Web.Services.WebMethod(enableSession: true)] 
public static List<CourseItem> GetItems() { 
    return (new MTE()).GetItems(); 
}

以及CourseItem对象如下:

public static CourseItem {
    public string CourseNum { get; set; }
    public string Desc { get; set; }
}

我从 javascript 中使用 webmethod,如下所示:

function GetCourses_Success(result) {
    // Problem starts here
    if (result.d != null) {
        for (i = 0; i < result.d.length; i++) {
            alert(result.d[i]["CourseNum"]);
}

问题: 警报有时会显示“NaN”而不是实际的课程编号。问题与大多数课程编号只是数字这一事实有关,但偶尔会有课程编号是一个末尾带有星号的数字(例如 - 111234* 或 999234*)。所以在 webmethod 和 alert 之间的某个地方,有些东西为了自己的利益而试图变得太聪明,并认为 CourseNum 是一个数字字段(也许是整数),而实际上它只是一个字符串。

我也试过了

result.d[i]["CourseNum"].toString() 

但警报仍然显示“NaN”

提前感谢您的帮助!

【问题讨论】:

  • 我很想知道如果您将值分配给标签而不是提醒它,它是否会起作用;不过,我的钱说它仍然会产生相同的结果。您也可以尝试一种 hacky 方法:var foo = result.d[i]["CourseNum"] + '';
  • 你是对的 - 它确实产生了相同的结果。

标签: javascript jquery asp.net webmethod


【解决方案1】:

尝试转义星号。 Javascript 很可能认为您正在成倍增加。正如您所说的那样,某些东西(Javascript)太聪明了。

【讨论】:

  • 做到了。谢谢您的帮助! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多