2012-07-16 49 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