2014-06-13 28 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

相关问题