我创建了一个小表单并将链接提供给我的客户,因此他将视图包含在他的页面中的一个IFRAME
中并显示确定。
当用户在IFRAME
内提交IFRAME
表单而非重绘时,请占据整个页面。
...
ViewBag.result = "Form send correctly";
return View();
我应该使用什么代替return View();
?
答案 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>