2012-05-27 98 views
0

我試圖減少對服務器的請求數量。我想返回部分視圖到我的$.get方法作爲一個字符串,以便我可以一次返回3個,而不是有3個獨立的服務器回調。無論如何要做到這一點。到目前爲止,我作爲字符串返回部分視圖

到目前爲止,它只是返回System.Web.Mvc.PartialViewResult

function updateChat() { 

/** I want to make this work so I only have 1 callback */ 
$.get("Home/refreshChatParts", {}, function (response) { 
    var html = response.split(","); 
    $("#chatWindow").replaceWith(html[0]); 
    $("#chatHeader").replaceWith(html[1]); 
    $("#playerList").replaceWith(html[2]); 
}); 

/** this stuff works, but is a lot of call backs */ 
$.get("Home/refreshChatText", {}, function (html) { 
    $("#chatWindow").replaceWith(html); 
}); 

$.get("Home/refreshChatHeader", {}, function (html) { 
    $("#chatHeader").replaceWith(html); 
}); 

$.get("Home/refreshPlayerList", {}, function (html) { 
    $("#playerList").replaceWith(html); 
}); 
*/ 
$.get("Home/getRequest", {}, function (requestUser) { 
    if (requestUser.toString() != "failed") { 
     pause = true; 
     var join = confirm(requestUser + " would like to play a game with you"); 
     if (join) { 
      startGame(requestUser); 
     } else 
      pause = false; 
     resetRequestUser(requestUser); 
    } 
}); 

//$.get("Home/checkForGameStart", {}, function (response) { /*alert(response);*/ }); 

scrollChatDown(); 

setTimeout('updateChat()', 20000); 
} 




public String refreshChatParts() { 

     //refresh chat text 
     ViewData["ChatText"] = getFormatedChatText(); 

     //refresh usercount 
     try { 
      userCount = getUserCount(); 
      ViewData["numberOfUsers"] = "There are " + userCount + " players online"; 
     } catch (Exception e) { ViewData["numberOfUsers"] = e.Message; } 

     //refresh player list 
     ViewData["listOfPlayers"] = getFormatedPlayerList(); 

     checkForGameStart(); 

     return PartialView("ChatText") + "," + PartialView("ChatHeader") + "," + PartialView("playerList"); 
    } 
+0

@AlfalfaStrange同意了。 –

回答

0

方法「PartialView」返回類型「System.Web.Mvc.PartialViewResult」所以當你試圖串連該方法的返回結果將調用對象的ToString,如果不被覆蓋,則返回類型名稱。

所以這種方法不會出於這個原因。你想要做的是將你的動作返回類型標記爲PartialViewResult。

然後定義一個局部視圖,簡單地寫出你想要返回的三個局部視圖。

如果你定義一個新的部分是這樣的:

@{ Html.RenderPartial("ChatText"); } , 
@{ Html.RenderPartial("ChatHeader"); } , 
@{ Html.RenderPartial("playerList"); } 

,並返回部分,你應該得到你以後。

+0

對,我很害怕這個。我將不得不重寫我的HTML。有一個第四部分觀點,我不想不斷更新。感謝你的回答 – Gambai

相關問題