我正在尝试使用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);
})
});
});
答案 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);
}
希望得到这个帮助。