0

我正在使用 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 中的成功代码。

任何人都可以就我如何做到这一点提供任何建议。

非常感谢

4

1 回答 1

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");
},
...
于 2013-05-28T20:49:58.047 回答