2012-09-25 52 views
1

我有一個控制器動作,被JQuery ajax調用,並希望返回「結果」的內容到請求頁​​面。 到目前爲止,我有...部分視圖不通過Ajax調用渲染

控制器

public ActionResult DynCalc(resultsModel model){ 
    ... 
    //code that populates model - all working ok 
    ... 
    if (Request.IsAjaxRequest()) 
      { 
      return PartialView("results", model.Results); 
      } 
      else 
      { 
      return null; //Handle this later 
      } 
    } 

這傳回一個有效的模式。 從javascript調用:

 $.ajax({ 
      url: "/Test/DynCalc", 
      type: "POST", 
      data: $("#frmResults").serialize(), //This part works 
      dataType: "html", 
      success: function (result) { 
       $('#resultsSection').html(result); 
       $('#hide_panel a').flash("#111", 1000); 
      } 
     }); 

成功從未被擊中。希望有人能告訴我,我很愚蠢,錯過了一些明顯的東西?

我的部分瀏覽結果只是一個帶有javascript的HTML頁面。如果我有以下

在我的結果視圖Hello world,然後它工作正常,與任何腳本,它不

我在正確的軌道上?我應該改變控制器的回報類型嗎?或者使用JSON?

我沒有發佈結果頁面的內容,因爲無論它是整個文檔還是簡單的<b>hi</b> - 它都做同樣的事情。

+0

通過JQ我假設你的意思是jQuery?我會建議使用Firefox和Firebug來進行調試。您可以逐步瀏覽並查看實際發生的情況,並監控網絡流量。還要添加一個失敗/錯誤事件處理程序,因爲如果失敗/錯誤失敗,那也會告訴你一些事情。 –

+0

@DaleBurrell是的,我還添加了一個失敗處理程序,它每次都被打中,'results'是一個對象 - 我無法檢查。 – JustAnotherDeveloper

+0

你無法在Firebug中檢查它嗎? –

回答

1

試着返回一個視圖。因爲在這種情況下你的結果是一個完整的視圖(因爲行爲結果可能是HTML,XML,JSON等等)。 僅使用PartialView 作爲呈現視圖的部分的方法。

E.g.在你的MasterPage上,你想「總是」渲染用戶信息:@RenderAction("UserInfoAction", "UserController")

0
var model= { 
     "PropertyName1":$("#txt1").val(), 
     "PropertyName1": $("#txt2").val(),   
     } 

    $.ajax({ 
     type:"POST", 
     url: 'Url.Action("DynCalc","ControllerName")', 
     data: JSON.stringify(model), 
     contentType: "application/json;charset=utf-8", 
     success: function (data, status, xhr) 
      { 
     alert("The result is : " + status + ": " + data); 
      }, 
     error: function (xhr) 
     { 
     alert(xhr.responseText); 
     } 
     });