2015-11-17 76 views
2

我創建一個小表單並將鏈接提供給我的客戶,以便將他的視圖包含在他的頁面中的一個IFRAME中,並顯示ok。將剃刀視圖返回到Iframe中

當用戶提交IFRAME表單而不是在IFRAME裏面重新繪製整個頁面時。

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

我該用什麼來代替return View();

+0

如果你設置窗體的' target'屬性爲'_self'? (這*應該是默認的,但是值得明確的嘗試。)這實際上並不是你可以從服務器端代碼中控制的任何東西。這取決於客戶端代碼和瀏覽器來確定在這種情況下要做什麼。 – David

回答

4

我覺得問題不在控制器上。這是在你的View。你可以嘗試的元素設置一個名稱iframe和目標的形式發佈此元素,樣品:

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

,並在您查看的iFrame中

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

iframe目前不在我的視圖中。那麼我應該添加一個虛構的Iframe並在那裏刷新? –

+0

是的,它不是,你可以爲它添加一個「屬性」名字嗎?如果沒有,你需要做一個javascript代碼來獲取這個元素的引用並將其設置在你的表單的目標上,但我不確定它。 –

+0

是的,我可以有'IFrame ID',但那個頁面是PHP,所以他們只使用'src = myLink'。我應該尋找什麼javascript功能? –

1

我想你的問題是,它顯示了你不想在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> 
+0

不,問題是客戶頁面是PHP,他只是把我的鏈接,並顯示確定。但是當點擊我的鏈接顯示整個頁面,而不是iframe裏面 –

+0

@JuanCarlosOropeza你可以自定義你想要顯示的內容。根據需要只顯示另一個視圖。看到我更新的答案。 – Shyju