我有一个视图,有一些下拉菜单,允许您选择一些调查。选中后,它会将调查加载到iframe中。将视图加载到其中工作正常,但我试图在iframe旁边显示有关此调查的统计信息(摘要)。但是因为我将视图返回到iframe,所以viewbag,viewdata或tempdata不会返回任何内容(想象它会对iframe执行任何操作),但我需要它将信息返回到整个视图。不知道该怎么做..非常感谢任何帮助。感谢
我的观点:
@using (Html.BeginForm("Survey", "Moderator", FormMethod.Post, new { target = modFrame" }))
{
<div id="jWizard" class="jWizard wizardStyle">
<table class="moderatorPage">
<tr>
<td > </td>
<td> </td>
<td> </td>
<td> </td>
<td>Study: @Html.DropDownList("SurveyID", Model.Surveys, new { onchange = "LoadGroups();", @class = "dropDownMain" })</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td>Group: @Html.DropDownList("GroupID", Model.UserGroups, new { onchange = "LoadUsers();", @class = "dropDownMain" })</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td>User: @Html.DropDownList("UserID", Model.Users, new { @class = "dropDownMain" })</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td><input type="submit" value="Start" /></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><iframe id="modFrame" name="modFrame" style="width:100%; height:1000px; border:0px"></iframe></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>@TempData["test"]</td>
<td>@ViewBag.test</td>
<td>@ViewData["test"]</td>
<td> </td>
<td> </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 :(得分:0)
欢迎使用Stackoverflow!
您的iframe中的ViewBag
未向您的托管页面中的ViewBag
公开。实际上,您需要在托管页面中刷新页面才能重新加载自己的ViewBag
。
如果我是你,我会重新构建解决方案,以利用ajax服务和基于JavaScript的视图引擎(例如AngularJS)来检索动态数据;但是,如果有一些原因你必须坚持使用这种iFrame方法,那么你可能只需要在选择更改时重新加载整个页面,用相关数据填充主页的viewbag,并设置源代码同样具有ViewBag
参数的iframe。