由Ajax用POST调用的MVC Partial View

时间:2015-05-22 12:39:38

标签: javascript ajax asp.net-mvc post partial-views

我试图找到答案,但没有成功。

这个想法是:当单击按钮时,AddRestaurant方法检查餐馆是否已存在于数据库中。如果是 - 它将经理与餐厅联系起来。如果不是 - 它会创建一个新的餐馆条目,然后将其与经理联系起来。

我有以下代码:

的JavaScript

$("#btnAddRestaurant").click(function () {
$.ajax({
    url: "AddRestaurant",
    data: { id: selectedPlace.place_id, name: selectedPlace.name, lat: selectedPlace.geometry.location.lat(), lng: selectedPlace.geometry.location.lng() },
    type: "POST",
    dataType: "html",
    success: function (data) {
        $("#addResult").html(data);
        $("#btnAddRestaurant").hide();
        $("#inputLable").hide();
    },
    error: function(data) {
        console.log("Error in add restaurant");
    }
});
});

控制器中的操作:

public ActionResult AddRestaurant()
    {
        return View();
    }

    [HttpPost]
    public PartialViewResult AddRestaurant(string id, string name, decimal lat, decimal lng)
    {
        if (Request.IsAjaxRequest())
        {
            Restaurants restaurant =
            _dbRestaurant.Restaurants.FirstOrDefault(r => r.Id.Equals(id));
            if (restaurant == null)
            {
                restaurant = new Restaurants
                {
                    Id = id,
                    Name = name,
                    Latitude = lat,
                    Longitude = lng
                };
                _dbRestaurant.Restaurants.Add(restaurant);
                Managers manager = new Managers();
                manager.ManagerId = User.Identity.GetUserId();
                manager.RestaurantId = id;
                _dbManager.Managers.Add(manager);
                return PartialView("_LinkRestaurant", restaurant);
            }
            else
            {
                Managers manager = new Managers();
                manager.ManagerId = User.Identity.GetUserId();
                manager.RestaurantId = id;
                _dbManager.Managers.Add(manager);
                return PartialView("Index");
            }
        }
        return PartialView("Index");
    }

问题是,当我单击按钮时,我从ajax调用和500(内部服务器错误)中得到错误。如果我改变POST动作并使其成为" GET"它有效,但数据库中没有任何变化。我觉得我错过了一些必不可少的东西。任何帮助或解释都非常感谢。

0 个答案:

没有答案