2014-06-13 60 views
0

我有一個觀點,有一些下拉,可以讓你選擇一些調查。選中後,將調查加載到iframe中。加載視圖到它工作正常,但我試圖顯示統計(摘要)關於此調查旁邊的iframe。但是,由於我將視圖返回給iframe,viewbag,viewdata或tempdata不會返回任何東西(想象它對iframe的影響),但我需要它將信息返回到整個視圖。不知道如何做到這一點..任何幫助,非常感謝。由於將視圖返回給MVC4中的iframe時,viewbag,viewdata或tempdata不會將信息傳遞迴整個視圖。

我的觀點:

@using (Html.BeginForm("Survey", "Moderator", FormMethod.Post, new { target = modFrame" })) 
{ 
<div id="jWizard" class="jWizard wizardStyle"> 

    <table class="moderatorPage"> 
     <tr> 
      <td >&nbsp;</td> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
      <td>Study: @Html.DropDownList("SurveyID", Model.Surveys, new { onchange = "LoadGroups();", @class = "dropDownMain" })</td> 
     </tr> 
     <tr> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
      <td>Group: @Html.DropDownList("GroupID", Model.UserGroups, new { onchange = "LoadUsers();", @class = "dropDownMain" })</td> 

     </tr> 
     <tr> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
      <td>User: @Html.DropDownList("UserID", Model.Users, new { @class = "dropDownMain" })</td> 
     </tr> 
     <tr> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
      <td><input type="submit" value="Start" /></td> 

     </tr> 

     <tr> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
      <td><iframe id="modFrame" name="modFrame" style="width:100%; height:1000px; border:0px"></iframe></td> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 

     </tr> 

     <tr> 
      <td>@TempData["test"]</td> 
      <td>@ViewBag.test</td> 
      <td>@ViewData["test"]</td> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 

     </tr> 
    </table> 


</div> 
} 

而且在我的控制器:

public ActionResult Survey(int SurveyID, string GroupID, string UserID) 
    { 
     ViewBag.UserID = UserID; 

     if (SurveyID != 0) 
     { 



      TempData["test"] = "test1"; 
      ViewData["test"] = "test2"; 
      ViewBag.test = "test3"; 


      var userTypeRepo = new UserTypeRepository(new UnitOfWork()); 
      ViewBag.UserType = userTypeRepo.Get(user.UserTypeID).Description; 
      var repo = new SurveyRepository(new UnitOfWork()); 
      var survey = repo.Get(SurveyID, "MasterPages,MasterPages.MasterTickets"); 


      return View(survey); 
     } 
     else 
     { 
      return View("Error", (object)"Survey ID is zero"); 
     } 
    } 

回答

0

歡迎計算器!

您的iframe中的ViewBag未顯示在您的託管頁面中的ViewBag。實際上,您需要在託管頁面刷新頁面以重新加載它自己的ViewBag

如果我是你,我會重新架構解決方案,利用AJAX服務和基於JavaScript(例如AngularJS)視圖引擎檢索您的動態數據;但是,如果有某些原因需要堅持使用這種iFrame方法,那麼您可能需要在選擇更改時重新加載整個頁面,使用相關數據填充主機頁的viewbag,並將iframe的源設置爲還有一個ViewBag參數。

祝你好運!

+0

感謝您的快速響應!我一直在這裏找到答案,但從來沒有發佈一個,但哈哈。無論如何,對於我在做什麼,我不知道如何使用除iframe之外的其他任何東西。我正在創建一個管理員視圖,允許您查看用戶或整體迴應。我需要能夠加載具有玩家功能的任何特定調查(向後,向前,頁面跳轉)並顯示統計數據。我討厭iframe,但不知道更好的方法。 – Luke

相關問題