获取ajax的返回值保存新表单

时间:2013-05-28 20:27:58

标签: asp.net-mvc jquery

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

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

非常感谢

1 个答案:

答案 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");
},
...