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,