我正在使用ajax将表单数据添加到数据库中。我的添加代码工作得很好,但我需要以某种方式获取新创建的ID并在保存成功后在我的jquery中使用它。
这是我的保存jquery:
$(document).ready(function() {
$("#saveChanges").on("click", function(e) {
var formData = $("form").serialize();
e.preventDefault();
$.ajax({
url: "newListing/",
data: formData,
type: "POST",
success: function (resp) {
debugger;
alert($('#id').val());
$('#listChosen').html("");
$('#listChosen').load("/Listing/SearchListing/" + $('#id').val());
alert("listing added");
},
error: function(xhr, ajaxoptions, thrownError) {
alert(xhr.responseText);
}
});
});
我要做的是从newListing中公开新创建的ID,并在调用/ SearchListing /时使用它。
我用新列表调用的控制器操作如下:
[HttpPost]
public ActionResult newListing(Listing newList)
{
_listingservice.NewListing(newList);
return View();
}
此操作通过我的服务层通过接口过滤到我的存储库,最终进行此调用:
try
{
_entities.Listings.Add(newList);
_entities.SaveChanges();
}
catch (Exception)
{
return false;
throw;
}
return true;
在savechange()上新的ID可用,但我不知道如何将其过滤回jquery中的成功代码。
任何人都可以就如何做到这一点提出任何建议。
非常感谢
答案 0 :(得分:0)
您可以从NewListing
返回新保存的实体。您似乎没有使用当前正在呈现的View()
,因此您只能使用Id进行回复:
[HttpPost]
public ActionResult newListing(Listing newList)
{
var entity = _listingservice.NewListing(newList);
return Content(entity.Id.ToString());
}
然后你的ajax会收到id:
...
success: function (id) {
debugger;
alert(id);
$('#listChosen').html("");
$('#listChosen').load("/Listing/SearchListing/" + id);
alert("listing added");
},
...