Ajax调用asp.netmvc 5控制器,参数return空
Ajax call asp.net mvc 5 controller, parameter return null
我尝试使用 ajax 调用我的控制器。
但是当我到达控制器时我的参数 return null
这是我的视图代码
function ajaxfunction(id) {
var serviceURL = '/Users/AddWishList';
alert("inside ajax");
alert(id);
$.ajax({
type: "POST",
url: serviceURL,
data: roomID = id ,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
alert(data);
}
function errorFunc() {
alert('error');
}
};
警报 (id) 正确显示数据,但当我到达控制器时它 return 为空。
enter image description here
[HttpPost]
public JsonResult AddWishList(string roomID)
{
wishList wish = new wishList();
wish.roomID = roomID;
var user = _context.UsersDB.Where(u => u.userName == HttpContext.User.Identity.Name).FirstOrDefault();
wish.userID = user.userID.ToString();
_context.wishListDB.Add(wish);
_context.SaveChanges();
return Json("Room added to your wish list",JsonRequestBehavior.AllowGet);
}
和return消息也无法显示,这是ajax中的“数据”。
有人可以帮忙吗?
您必须将对象传递给控制器。替换:
data: roomID = id ,
和
data: JSON.stringify({'roomID' : id}) ,
这应该会如预期的那样工作。
在这种情况下使用 GET 更简单,但如果您仍想使用 POST,则必须使用 ViewModel
public class ViewModel
{
public string RoomID {get;set;}
}
并更改操作 header:
[HttpPost]
public JsonResult AddWishList(ViewModel viewModel)
{
var roomID=viewModel.RoomId;
....
}
使用此 ajax 代码:
function ajaxfunction(id) {
var serviceURL = '/Users/AddWishList';
$.ajax({
type: "POST",
url: serviceURL,
data: {roomID = id} ,
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
alert(data);
}
function errorFunc() {
alert('error');
}
};
如果您决定使用 GET:
[Route("{roomId}")]
public JsonResult AddWishList(string roomID)
和ajax
var serviceURL = '/Users/AddWishList/'+id;
$.ajax({
type: "GET",
url: serviceURL,
success: successFunc,
我尝试使用 ajax 调用我的控制器。 但是当我到达控制器时我的参数 return null 这是我的视图代码
function ajaxfunction(id) {
var serviceURL = '/Users/AddWishList';
alert("inside ajax");
alert(id);
$.ajax({
type: "POST",
url: serviceURL,
data: roomID = id ,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
alert(data);
}
function errorFunc() {
alert('error');
}
};
警报 (id) 正确显示数据,但当我到达控制器时它 return 为空。 enter image description here
[HttpPost]
public JsonResult AddWishList(string roomID)
{
wishList wish = new wishList();
wish.roomID = roomID;
var user = _context.UsersDB.Where(u => u.userName == HttpContext.User.Identity.Name).FirstOrDefault();
wish.userID = user.userID.ToString();
_context.wishListDB.Add(wish);
_context.SaveChanges();
return Json("Room added to your wish list",JsonRequestBehavior.AllowGet);
}
和return消息也无法显示,这是ajax中的“数据”。 有人可以帮忙吗?
您必须将对象传递给控制器。替换:
data: roomID = id ,
和
data: JSON.stringify({'roomID' : id}) ,
这应该会如预期的那样工作。
在这种情况下使用 GET 更简单,但如果您仍想使用 POST,则必须使用 ViewModel
public class ViewModel
{
public string RoomID {get;set;}
}
并更改操作 header:
[HttpPost]
public JsonResult AddWishList(ViewModel viewModel)
{
var roomID=viewModel.RoomId;
....
}
使用此 ajax 代码:
function ajaxfunction(id) {
var serviceURL = '/Users/AddWishList';
$.ajax({
type: "POST",
url: serviceURL,
data: {roomID = id} ,
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
alert(data);
}
function errorFunc() {
alert('error');
}
};
如果您决定使用 GET:
[Route("{roomId}")]
public JsonResult AddWishList(string roomID)
和ajax
var serviceURL = '/Users/AddWishList/'+id;
$.ajax({
type: "GET",
url: serviceURL,
success: successFunc,