2012-07-16 31 views
1

我在我的视图中调用一个动作控制器,当我设置断点并观察ajax函数的行为时,它在代码后面正确工作,但是当返回到它的功能时它不会运行'成功:功能'和返回错误Ajax在asp.net中调用并返回错误mvc3

$.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

您能告诉我们Controller中的Action代码吗? – 2012-07-16 06:04:09

+0

是的,我更新了我的帖子 – 2012-07-16 06:07:34

+1

是你期望模型的部分页面吗?它是强类型的?你传递null给它可能是异常抛出的部分页面,同时呈现 – Rafay 2012-07-16 06:41:26

回答

0

可能是一个错误是在线路

url: "/GetListContents", 

尝试使用url: '@Url.Action('GetListContents','YourControllerName'),代替

+0

不,当我设置功能正文中的代码后面的代码函数正常运行,没有异常抛出! – 2012-07-16 06:16:53

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(); 
     } 
    } 
+0

渲染部分代码在后面?我不能使用它 或在视图中使用?你能说更多吗? – 2012-07-16 06:24:45

+0

您从控制器操作中传回字符串。出现错误时,我通常会将包含'success'属性和'view'属性的json传回给'message'。然后'view'将包含呈现的html。 – 2012-07-16 06:33:05

+0

与你的答案我发现我忘了发送数据到我的部分视图,当它请求该变量为null并出现错误时,tnx – 2012-07-16 06:57:19