我在这里有以下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
答案 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; }
}