2012-05-25 78 views
1

我之前問過這個問題,但問題是我得到一個響應,而且這個響應不是針對我問的問題。所以,爲了清楚,預先,這個問題不是關於:如何在Razor和Webforms之間共享母版頁

我不想在同一個項目中使用HYBRID,MVC和Webforms!

有人可以提供一個鏈接,顯示兩個項目與單個主頁面並排運行嗎?一個項目是一個ASP.Net Web窗體,包含主頁面。另一個項目將是一個MVC Razor項目。 Master頁面將提供到.aspx頁面以及.cshtml視圖的鏈接。 這兩個項目都應該是C#。我需要能夠下載源代碼以查看這一切是如何工作的。

答案#1不是我正在尋找的答案。我的問題非常具體。

+0

爲什麼投票下來? – ivowiblo

+0

可能因爲原來的標題是絕對可怕的。 –

+0

它更容易修復它... – ivowiblo

回答

3

據我知道這是不可能的,原因有二:

  • 您不能從應用程序之外使用的.master頁面。它必須是應用程序的一部分(作爲文件或作爲與VirtualPathProvider欺騙相結合的庫的嵌入式資源)。
  • 您無法使用.cshtml中的.master頁面,就像您無法使用.aspx頁面中的.cshtml佈局文件作爲MasterPageFile一樣。

因此,直接重新使用您現有的.master頁面似乎不可能。

+0

這些都是好的一點,但它不是真的,它不是可能。見http://www.hanselman.com/blog/MixingRazorViewsAndWebFormsMasterPagesWithASPNETMVC3.aspx – Milimetric

+0

@Milimetric這仍然不會使第一個點無效(主機必須是本地的)。 AFAICT它還要求您使用MVC母版頁,而不僅僅是任何舊的母版頁。接下來,您需要更改控制器以返回不同的查看結果。 Razor視圖中的標準基礎結構使用Layout屬性來設置主框架不再有效,並且您不能在Razor視圖中使用'@ sections',因此它將主框架限制爲單個''元素。所以對於手頭的問題來說太有限了。無論如何,這是一件很棒的事情,當你陷入困境時,它可以幫助你。 – Ruben

2

因爲這是兩個不同的技術,您將無法使用相同的文件。您需要爲您的WebForms應用程序提供一個MasterPage,並且您的MVC應用程序的Layout將看起來相同。

如果您的母版頁/佈局沒有動態內容,它只是純html,我認爲你可以在一個文件中創建一個腳本,從中創建MasterPage和佈局文件,但我不認爲這值得。

1

我無法向您顯示完整的來源。不是我的表演。但我可以告訴你這個。這是我們使用WebForm母版頁渲染剃鬚刀視圖的一部分。

--- --- razorview.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
    <% Html.RenderPartial((string) ViewBag._ViewName); %> 
</asp:Content> 
<asp:Content ID="scriptContent" ContentPlaceHolderID="ScriptContent" runat="server"> 

</asp:Content> 

--- ---使用

public ActionResult Create(int clientId) 
{ 
.... 
return this.RazorView(choices); 

---的Site.Master(刪節)---

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> 

<%@ Import Namespace="...." %> 
<!DOCTYPE html> 
<html> 
<head id="Head1" runat="server"> 
    <title>Some Alt</title> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
    <link href="../../Site.css" rel="stylesheet" type="text/css" /> 
    <asp:ContentPlaceHolder ID="ScriptContent" runat="server" /> 
    <meta http-equiv="Pragma" content="no-cache" /> 
    <meta http-equiv="Expires" content="-1" /> 
</head> 
<body> 
    <div class="page"> 
     <div id="main"> 
      <table width="100%"> 
       <tr> 
        <td valign="top" width="150" height="50"> 
         <img src="<%= Common.CompanyLogoPath%>" alt="Some Alt width="150" 
          height="50" /> 
        </td> 
        <td align="left" width="630" height="50" class="mainheading"> 
         Description 
        </td> 
        <td align="right" valign="bottom"> 
         <%= DateTime.Now.FormatShortDate() %> 
        </td> 
       </tr> 
       <tr> 
        <td colspan="3"> 
         <hr /> 
        </td> 
       </tr> 
       <tr> 
        <td valign="top" class="rightBorder"> 
         <table> 
          ..... 
      </table> 
     </div> 
    </div> 
</body> 
</html> 
+0

這不是真正使用.cshtml MVC視圖中的Web窗體母版頁,而是使用MVC母版頁來顯示部分。 – Ruben

+0

正在呈現的視圖不是部分視圖,即全部視圖。如果有什麼是部分它是razorview.aspx –

+0

認爲像和runat =服務器似乎漂亮的WebForms給我。你能提供一個關於MasterPage的樣子,只是爲了確認嗎? – ivowiblo