使用Json.NET填充HTML表

时间:2014-03-13 12:51:15

标签: c# json post json.net

HTML表需要来自JSON对象的2个数据单元,default.aspx.cs文件通过POST接收。解析此JSON对象的任务有点棘手,因为数据的内容可能相当大。但是,VS'立即窗口确认JsonResult [""]命名法正常工作(IOW,我成功地从POST请求中的JSON对象接收数据)。但是,在尝试实现下面的代码时,我得到了不一致的性能。

  if (Request.HttpMethod.ToString() == "POST") {

    if (Request.Form["Item"] != null) {
      Newtonsoft.Json.Linq.JObject JsonResult = (Newtonsoft.Json.Linq.JObject)JsonConvert.DeserializeObject(Request.Form["Item"]);

      if (JsonResult["requestType"] != null) {
        cartItem = new CartItem(
          "TestCode",
          JsonResult["containerType"].ToString(),
          JsonResult["resultType"].ToString(),
          1,
          3.99
          );

        // populate empty cells with data, place cells in row and place row in table.
        foreach (var item in cartItem.getCartCells().Select((value, index) => new { value, index })) {
          try {
            cartCells.Add(new TableCell());
            int i = cartCells.Count() - 1;
            cartCells[i].Text = (item.value != null || item.value != "") ? item.value : " - ";
            tr.Cells.Add(cartCells[i]);
          } catch (Exception ex) {
            Response.Write("shopping cart failed to run: " + ex.Message);
            break;
          }
        }
        shoppingCart.Rows.Add(tr);
      }
    }
  }

以前,我有一个存根执行类似的任务没有任何问题。但是,现在,此代码应添加到我的表中的附加行不会出现在POST上。奇怪的是,当我在检查请求方法后添加Response.Write("Write a test")时,表格构建得很好。这里有某种异步问题吗?智能感知和调试器没有任何东西......

1 个答案:

答案 0 :(得分:0)

上面的逻辑实际上是合理的。它不工作的原因与我的提交有关。我正在从我的表单中抽象数据并使用JS提交它(因为我实际上需要比单独的表单更多的数据)。没有发生在我身上的是我使用的按钮也提交了我的表格。结果是一个凌乱的标题,看起来,它已经被两个请求混合在一起了。解决方案是将<button onclick="Service.refresh()"></button>替换为<input type="button" onClick="Service.refresh()"> ...

除此之外,这个主题也可能对遭受类似头痛的人有用:<button> vs. <input type="button" />. Which to use?