我在我的视图中调用一个动作控制器,当我设置断点并观察ajax函数的行为时,它在后面的代码上正常工作但是当回到功能时它不会运行'成功:函数'并返回错误
$.ajax({
type: "POST",
url: "/GetListContents",
data: { _PageID: PageID, _LangID: LangID, _BoxTypeID: 6, _ListTypeID: 8, _Count: CurPageIndex },
cache: false,
dataType: 'html',
success: function (html) {
$("#dynamicBody").html(html);
$("#dynamicFooter").html("Hello");
},
error: function (xhRequest, ErrorText, thrownError) {
$("#dynamicBody").html(xhRequest.status);
$("#dynamicBody").html(ErrorText);
}
});
GetListContents 处理后面的代码,但结果是错误
tnx提前
抱歉英语不好
更新
这是我的动作控制器代码
[HttpPost]
public PartialViewResult GetListContents(int _PageID, int _LangID, int _BoxTypeID, int _ListTypeID, int _Count)
{
dynamic cOut = GetListContent(_PageID, _LangID, _BoxTypeID, _ListTypeID, _Count);
return PartialView("DynamicPagingBoxInfo",null);
}
public dynamic GetListContent(int _PageID, int _LangID, int _BoxTypeID, int _ListTypeID, int _Count)
{
List<ipMedia_PageContentsCache> PageContent = new List<ipMedia_PageContentsCache>();
ListPageDataProvider.GetDynamicBoxContent(ref PageContent, _PageID, _LangID,_Count * 10);
ViewBag.PageListContents = PageContent;
ViewBag.CurPageIndex = _Count;
return PageContent;
}
更新||
更多解释:
我的局部视图使用viewbag来呈现页面并从后面的代码中获取数据
这个部分视图第一次运行在页面请求工作正常,但当我想用ajax渲染它时,ajax函数返回错误!
我的视图包在第一次和ajax调用中具有相同的结构
答案 0 :(得分:1)
您需要从控制器发回实际的html。看看RenderPartial
。我过去使用了以下代码来执行此功能(放置在我的控制器继承的基本控制器上):
protected string RenderPartialView(string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
{
viewName = ControllerContext.RouteData.GetRequiredString("action");
}
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
答案 1 :(得分:0)
可能是错误在行
url: "/GetListContents",
尝试使用url: '@Url.Action('GetListContents','YourControllerName'),
代替