Asp.net mvc 4 将视图返回到MVC4中的iframe时,viewbag、viewdata或tempdata不会将信息传递回整体视图。
我有一个视图,其中有一些下拉列表,允许您选择一些调查。选中此选项后,将测量加载到iframe中。将视图加载到其中效果很好,但我尝试在iframe旁边显示有关此调查的统计信息摘要。但是由于我将视图返回到iframe,viewbag、viewdata或tempdata不会向iframe返回它所做的任何操作,但我需要它将信息返回到整个视图。我不知道怎么做。。非常感谢您的帮助。谢谢 我的看法是:Asp.net mvc 4 将视图返回到MVC4中的iframe时,viewbag、viewdata或tempdata不会将信息传递回整体视图。,asp.net-mvc-4,iframe,viewbag,viewdata,tempdata,Asp.net Mvc 4,Iframe,Viewbag,Viewdata,Tempdata,我有一个视图,其中有一些下拉列表,允许您选择一些调查。选中此选项后,将测量加载到iframe中。将视图加载到其中效果很好,但我尝试在iframe旁边显示有关此调查的统计信息摘要。但是由于我将视图返回到iframe,viewbag、viewdata或tempdata不会向iframe返回它所做的任何操作,但我需要它将信息返回到整个视图。我不知道怎么做。。非常感谢您的帮助。谢谢 我的看法是: @using (Html.BeginForm("Survey", "Moderator", FormMeth
@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>
}
欢迎来到Stackoverflow iframe中的ViewBag不会暴露于宿主页面中的ViewBag。事实上,您需要在托管页面中进行页面刷新,以重新加载它自己的ViewBag 如果我是你,我会重新设计解决方案,利用ajax服务和基于JavaScript的视图引擎,例如检索动态数据;但是,如果出于某种原因,您必须坚持使用这种iFrame方法,那么您可能需要在选择更改时重新加载整个页面,使用相关数据填充宿主页面的viewbag,并使用viewbag参数设置iFrame的源
祝你好运 感谢您的快速回复!我总是在这里找到答案,但从来没有发布过答案哈哈。无论如何,对于我正在做的事情,除了iframe,我不知道如何使用其他任何东西。我正在创建一个管理员视图,允许您查看用户或总体响应。我需要能够加载任何特定的调查与球员功能向后,向前,页面跳转和显示统计数据沿它的一边。我讨厌iframes,但不知道有什么更好的方法。
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");
}
}