2012-05-27 96 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

相关问题