2012-03-05 26 views
1

デフォルトの_siteLayout.cshtmlファイルがあり、その中央に@RenderBody()というコールがあり、マークアップとRazorコードの間にあります。デフォルトのsiteLayoutを.aspxのWebページで使用するにはどうすればよいですか?

私は@RenderBody()への呼び出しを行う場所をレンダリングしたい複雑な.aspxページを持っています。

基本的に、私は新しいファイルのこの内部のような呼び出しを行うしたいと思います:

@{ 
    Layout = "/Shared/_SiteLayout.cshtml"; 
    @RenderPage(Default.aspx); 
} 

しかし、この場合には.aspxページへの呼び出しを行うことはできません。

これには簡単な解決策はありますか?

のDefault.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 


    <link href="fullcalendar/fullcalendar.css" rel="stylesheet" type="text/css" /> 
    <link href="Styles/dark-hive/jquery.ui.all.css" rel="stylesheet" type="text/css" > 
     <link href="Styles/jquery-ui-1.7.3.custom.css" rel="stylesheet" type="text/css" /> 
     <link rel='stylesheet' type='text/css' href='fullcalendar/fullcalendar.print.css' media='print' /> 

    <script src="jquery/jquery-1.3.2.min.js" type="text/javascript"></script> 
    <script src="jquery/jquery-ui-1.7.3.custom.min.js" type="text/javascript"></script> 
    <script src="jquery/jquery.qtip-1.0.0-rc3.min.js" type="text/javascript"></script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"> 
    </asp:ScriptManager> 
    <div id="updatedialog" style="font: 70% 'Trebuchet MS', sans-serif; margin: 50px;" 
     title="Update or Delete Event"> 
     <table cellpadding="0" class="style1"> 
      <tr> 
       <td class="alignRight"> 
        Name:</td> 
       <td class="alignLeft"> 
        <input id="eventName" type="text" /><br /></td> 
      </tr> 
      <tr> 
       <td class="alignRight"> 
        Description:</td> 
       <td class="alignLeft"> 
        <textarea id="eventDesc" cols="30" rows="3" ></textarea></td> 
      </tr> 
      <tr> 
       <td class="alignRight"> 
        Start Time:</td> 
       <td class="alignLeft"> 
        <span id="eventStart"></span></td> 
      </tr> 
      <tr> 
       <td class="alignRight"> 
        End Time: </td> 
       <td class="alignLeft"> 
        <span id="eventEnd"></span><input type="hidden" id="eventId" /></td> 
      </tr> 
     </table> 
    </div> 
    <div id="addDialog" style="font: 70% 'Trebuchet MS', sans-serif; margin: 50px;" title="Add Event"> 
    <table cellpadding="0" class="style1"> 
      <tr> 
       <td class="alignRight"> 
        Name:</td> 
       <td class="alignLeft"> 
        <input id="addEventName" type="text" size="50" /><br /></td> 
      </tr> 
      <tr> 
       <td class="alignRight"> 
        Description:</td> 
       <td class="alignLeft"> 
        <textarea id="addEventDesc" cols="30" rows="3" ></textarea></td> 
      </tr> 
      <tr> 
       <td class="alignRight"> 
        Start Time:</td> 
       <td class="alignLeft"> 
        <span id="addEventStartDate" ></span></td> 
      </tr> 
      <tr> 
       <td class="alignRight"> 
        End Time:</td> 
       <td class="alignLeft"> 
        <span id="addEventEndDate" ></span></td> 
      </tr> 
     </table> 

    </div> 
    <div runat="server" id="jsonDiv" /> 
    <input type="hidden" id="hdClient" runat="server" /> 
    </form> 
</body> 
</html> 

答えて

0

あなたは.ascxパーシャルにこの.aspxページから再利用し、それらをレンダリングするセクション外部化できます

@{ 
    Layout = "/Shared/_SiteLayout.cshtml"; 
} 
<div> 
    @Html.Partial("foo.ascx") 
</div> 
some other contents 

をそして、あなたが使用したい場合Razor Layoutを使ったWebFormsビューでは、可能ではないと恐れています。逆も可能です:using a Razor view with a WebForms masterpage

+0

回答ありがとうございます。この場合、@ Html.Partial( "Foo.aspx")を呼び出して、呼び出したい.aspxページ全体をレンダリングすることは可能ですか?それは理想的だろう。 –

+0

いいえ、私はaspxページがあなたが剃刀のレイアウトで持っていないいくつかのコンテンツの場所の所有者をオーバーライドすると思うので、それは可能ではありません。セクションを部分的に外部化し、この部分を再利用するだけです。 –

+0

ありがとうございます。私はあなたが「部分を部分的に外部化し、部分を再利用する」という意味で少し混乱しています。私のメソッドの上部に、 "%@ Page Language =" C# "AutoEventWireup =" true "CodeFile =" Default.aspx.cs "Inherits =" _ Default "%>とDefault.aspxファイルに多数のHTMLが含まれていますDefault.aspx.csファイルには完全にC#が含まれています。初心者の質問に対する謝罪私はちょうどこれをつかむためにいくつかの問題を抱えています。 –

0

最も簡単な解決策は、iFrameのページを部分的なビューからレンダリングすることです。そのオプションが、一般的に、このような場合の悪い練習(Are iframes considered 'bad practice'?を参照)

これを処理する適切な方法は、あなたが使用できるモジュールにaspxを分割することです - Darinが応答したとき。

関連する問題