将剃刀视图返回到iframe

时间:2015-11-17 16:26:25

标签: c# asp.net-mvc razor

我创建了一个小表单并将链接提供给我的客户,因此他将视图包含在他的页面中的一个IFRAME中并显示确定。

当用户在IFRAME内提交IFRAME表单而非重绘时,请占据整个页面。

...
ViewBag.result = "Form send correctly";
return View();

我应该使用什么代替return View();

2 个答案:

答案 0 :(得分:5)

我认为问题不在控制器上。它在View上。您可以尝试为元素iframe设置名称,并将表单定位到此元素上,以获取样本:

<iframe src="@Url.Action("ActionName", "ControllerName")" name="foo"></iframe>

并在iFrame中的视图中

@using(Html.BeginForm("Action", "Controller", FormMethod.Post, new { target = "foo" })
{
  ..
}

答案 1 :(得分:1)

我猜您的问题是,它显示了您不希望在iFrame中显示的布局。

您可以在剃须刀视图中禁用布局

@{
    Layout = null;
}

如果从页面中删除布局,则会丢失通过布局文件加载的所有JS和CSS。在这种情况下,您可以使用仍然引用所需CSS / JS文件的简约布局。

@{
    Layout = "~/Views/Shared/MyMiniLayout.cshtml;
}

您可以按照自己的方式自定义MyMiniLayout

完成表单提交后,您可以显示另一个视图,而不是显示相同的视图。

[HttpPost]
public ActionResult Register(string name)
{
  // to do :Do something with posted data
  return RedirectToAction("FormSubmitted");
}
public ActionResult FormSubmitted()
{ 
  return View();
}

您可以在FormSubmitted视图中将要显示的任何标记添加到用户。

@{
    Layout = null;
}
<h2>Submitted successfully</h2>