在C#中使用Ajax将int从视图传输到控制器
我想将一个整数从视图传输到控制器。我正在使用Ajax来实现这一点,下面是我的html代码:在C#中使用Ajax将int从视图传输到控制器,c#,jquery,ajax,C#,Jquery,Ajax,我想将一个整数从视图传输到控制器。我正在使用Ajax来实现这一点,下面是我的html代码: <input type="button" class="btn btn-default" value="Yes" id="return" onclick="returnBook(@item.BookID);"/> } 我的控制器: [HttpPost] public ActionResult ReturnBook(string id) { return Vie
<input type="button" class="btn btn-default" value="Yes" id="return"
onclick="returnBook(@item.BookID);"/>
}
我的控制器:
[HttpPost]
public ActionResult ReturnBook(string id)
{
return View();
}
在我的控制器中,当我使用字符串时,会调用该方法,但id仍然设置为null。但是,如果我使用“int id”,则根本不会调用该方法,并且会得到一个500错误。知道如何将id从视图传递到控制器吗?改为发送对象:
data: { id:bookID },
现在,您可以在控制器上使用此对象的键
id
来获取其值。MVC将自动尝试将从网页传递的数据值与控制器中声明的参数相匹配
因此,当您发送变量bookID
MVC时,它将尝试将该变量与控制器参数列表中名为bookID
的变量相匹配。由于该参数不存在,因此忽略关联的值
要解决问题,您可以将控制器声明更改为-
public ActionResult ReturnBook(string bookId)
或者将数据声明更改为
data: id,
或者(正如Jai建议的那样)-
您是否正在使用其他库或框架?因为一般来说,字符串
@item.BookId
不会神奇地被某个字段的值替换。通常,您必须从表单中获取它,例如
,然后returnBook(document.getElementById(“bookId”).value)
(或者$(“#bookId”)
,如果您使用jQuery作为标记的话)。
data: id,
data: { id:bookID },