2013-01-07 40 views
1

因此,我們的客戶希望將我們的MVC應用程序嵌入到他們的站點中。我的第一個解決方案 - 將我們的應用程序加載到其網站上的iFrame中,然後完成。MVC:使用遠程託管佈局查看

原來他們想要的是更復雜一點(和愚蠢)。 我們仍然需要託管我們的應用程序,但是當用戶訪問我們的網站時,它必須像我們的內容 - 我們的視圖,他們的佈局 - 看起來像他們的網站 - 但他們想要承載佈局。

因此,每次發出請求時,都會從客戶端站點檢索頁面(佈局),我們將呈現的視圖推入其中並顯示回最終用戶。

所以問題是:是否有可能做客戶想要的東西,因爲我無法圍繞MVC如何完成這件事情?

有何意見或建議?

+0

我會退後一步,問自己和你的客戶,他們真的需要什麼?爲什麼他們要求這是可怕的方式。可能他們不希望你的應用程序,他們想要你的內容,然後JSON和WebApi的方式是最好的。 – trailmax

回答

2

最好的解決方案是簡單地將數據公開給他們,並讓他們以任何他們想要的方式呈現它。你可以讓你的控制器簡單地爲他們吐出JSON,並讓他們隨心所欲地處理它。但是,這一切都假定視圖上沒有任何繁重的工作。

1

他們所要求的真的超出了MVC視圖引擎的功能,但它仍然是可能的。視圖引擎不會像Web瀏覽器那樣從各種Web資源中組裝網頁。瀏覽器將根據html中指定的內容加載JS,CSS和圖像。視圖引擎將根據MVC應用程序中的目錄結構內部的內容加載視圖,模板和佈局。它不旨在從另一臺服務器獲取這些文件。

不過,我認爲你可以得到這個工作,雖然它會充滿安全顧慮。您可以在您的Views目錄中創建一個鏈接到客戶端託管的網絡共享的符號鏈接。在這個份額將是他們希望你使用的佈局。現在,從查看目錄(而不是在網絡共享)中你自己的看法,您參考佈局:由於安全顧慮

@{ 
    Layout = "~/Views/HostedNetworkShare/layout.cshtml"; 
} 

,我DO NOT建議使用這種方法,但我也看不出有什麼它無法工作的原因。它還需要您的客戶在託管網絡共享方面進行一些合作。