ASP.NET和jQuery将tr行作为类传递

时间:2017-04-11 13:23:40

标签: c# jquery asp.net ajax

我在这里有以下HTML:

<tr>
   <td><input type='text' name='ID' value='345924' /></td>
   <td><input type='text' name='carNo' value='1' /></td>
   <td><input type='text' name='BuyerName' value='Steve' /></td>
   <td><input type='text' name='BuyDate' value='3/15/2016' /></td>
   <td><input type='text' name='Description' value='Steve payment went through' /></td>
   <td><input type='text' name='amount' value='' /></td>
   <td><input type='text' name='payedSoFar' value='73501.71' /></td>
   <td><input type='text' name='lastPaid' value='2/19/2016' /></td>
   <td><input type='text' name='notified' value='s' /></td>
   <td><input type='text' name='notifiedDate' value='2/22/2016' /></td>
   <td><input type='text' name='issues' value='' /></td>
   <td><input type='text' name='issueDate' value='' /></td>
   <td><input type='text' name='Notes' value='' /></td>
</tr>

我有大约13行,当然有不同的数据。

我有这个调用API控制器的ajax调用,这是在输入文本发生变化时触发的:

$("input[type=text]").on("change", function () {

    $.ajax({
                url: "/api/Action/updateCarInfo",
                type: "GET",
                error: function (request, status, error) {
                },
                success: function (data) {
                }
            });

});

它调用此ASP.NET API控制器:

[ResponseType(typeof(void))]
        public IHttpActionResult updateCarInfo(carClass cars)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            db.Entry(cars).State = EntityState.Modified;

            db.SaveChanges();

            return StatusCode(HttpStatusCode.NoContent);
        }

我正在尝试做什么,它在输入更改时,通过jquery ajax将整行传递给我的ASP.NET API Controller作为类。行中的每一列都是类项,并希望将其作为类传递。我希望这是有道理的。

我不能使用以下内容:

$(this).closest("form").submit()

因为它不是一种形式,而是一个html表。

UDPATE

我可以通过$(this).parent().parent().find('input').serialize()

抓住整行

但是当我尝试将其传递给我的ASP.NET API控制器时,我得到null

1 个答案:

答案 0 :(得分:0)

您需要在客户端上构建数据作为对象,然后通过ajax调用将数据传递给&#39;数据&#39;在您的ASP.Net应用程序中,您将需要一个与您的客户端DataObject匹配的相应DataContract或类。您可以使用控制器,然后使用&#34; [FromBody]&#34;如下:

[ResponseType(typeof(void))]
public IHttpActionResult updateCarInfo([FromBody] carClass cars)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    db.Entry(cars).State = EntityState.Modified;

    db.SaveChanges();

    return StatusCode(HttpStatusCode.NoContent);
}

重要的是要记住,您在客户端传递的对象必须与服务器上的datacontract / class匹配。

客户对象(JAVASRIPT)

dataObj = {
    ID: "1234567890",
    Name: "Foo"
}

服务器对象(.NET)

这将是您的模型&#39;例如:

public class
{
    public string ID { get; set }
    public string Name { get; set; }
}