我试图找到答案,但没有成功。
这个想法是:当单击按钮时,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"它有效,但数据库中没有任何变化。我觉得我错过了一些必不可少的东西。任何帮助或解释都非常感谢。