我創建一個小表單並將鏈接提供給我的客戶,以便將他的視圖包含在他的頁面中的一個IFRAME
中,並顯示ok。將剃刀視圖返回到Iframe中
當用戶提交IFRAME
表單而不是在IFRAME
裏面重新繪製整個頁面時。
...
ViewBag.result = "Form send correctly";
return View();
我該用什麼來代替return View();
?
我創建一個小表單並將鏈接提供給我的客戶,以便將他的視圖包含在他的頁面中的一個IFRAME
中,並顯示ok。將剃刀視圖返回到Iframe中
當用戶提交IFRAME
表單而不是在IFRAME
裏面重新繪製整個頁面時。
...
ViewBag.result = "Form send correctly";
return View();
我該用什麼來代替return View();
?
我覺得問題不在控制器上。這是在你的View
。你可以嘗試的元素設置一個名稱iframe
和目標的形式發佈此元素,樣品:
<iframe src="@Url.Action("ActionName", "ControllerName")" name="foo"></iframe>
,並在您查看的iFrame中
@using(Html.BeginForm("Action", "Controller", FormMethod.Post, new { target = "foo" })
{
..
}
iframe目前不在我的視圖中。那麼我應該添加一個虛構的Iframe並在那裏刷新? –
是的,它不是,你可以爲它添加一個「屬性」名字嗎?如果沒有,你需要做一個javascript代碼來獲取這個元素的引用並將其設置在你的表單的目標上,但我不確定它。 –
是的,我可以有'IFrame ID',但那個頁面是PHP,所以他們只使用'src = myLink'。我應該尋找什麼javascript功能? –
我想你的問題是,它顯示了你不想在iFrame中顯示的佈局。
您可以在Razor視圖
@{
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>
不,問題是客戶頁面是PHP,他只是把我的鏈接,並顯示確定。但是當點擊我的鏈接顯示整個頁面,而不是iframe裏面 –
@JuanCarlosOropeza你可以自定義你想要顯示的內容。根據需要只顯示另一個視圖。看到我更新的答案。 – Shyju
如果你設置窗體的' target'屬性爲'_self'? (這*應該是默認的,但是值得明確的嘗試。)這實際上並不是你可以從服務器端代碼中控制的任何東西。這取決於客戶端代碼和瀏覽器來確定在這種情況下要做什麼。 – David