部分视图c#使用ajax

时间:2016-10-15 17:49:14

标签: c# ajax entity-framework razor

我正在尝试使用ajax从控制器局部视图返回 在调试时我看到正确的数据被发送到控制器 但是当控制器完成他的需要时 他自动移动到函数Dispose而不是返回局部视图

控制器中的代码是:

    public PartialViewResult SearchPosts(string keyword)
    {
        var data = db.Posts.Where(f => f.Title.Contains(keyword) || f.Author.Contains(keyword)).ToList();
        return PartialView("_SearchPostsPArtial", data);
    }

来自View的部分代码是:

    $(document).ready(function () {
        $('#buttonSearch').click(function () {
            var keyword = $('#searchAjax').val();
            $.ajax({
                url: '@Url.Action("SearchPosts", "Posts")',
                contentType: 'application/html; charset=utf-8',
                type: 'GET',
                data: { keyword: keyword },
                dataType: 'html'
            })
            .success(function (result) {
                $('#result').html(result);
            })
            .error(function (xhr, status) {
                console.debug(status);
            })
        });
    });

1 个答案:

答案 0 :(得分:0)

使用ajax的正常场景是全局字符串格式的返回数据(特别是以j-son格式),为什么要使用部分视图返回的操作呢?如果你还需要这个局部视图我建议写另一个动作来响应你的ajax调用,如果你的动作做了很多代码,你可以将它拆分为tow方法并在部分视图和ajax响应动作中调用主要部分,伪代码可以是这样的:

private GetData([parameters...])
{
  ...
  code to get proper data
  ...
}
public PartialViewResult SearchPosts(string keyword)
{
  [DataType] data = GetData([variables...]);
  return PartialView("_SearchPostsPArtial", data);
}

public JsonResult SearchPosts(string keyword)
{
  [DataType] data = GetData([variables...]);
  return Json(data);
}

希望得到这个帮助。