2012-03-05 4 views
1

나는 가운데에 @RenderBody()에 대한 호출이있는 기본 _siteLayout.cshtml 파일을 일부 마크 업과 면도기 코드 사이에 가지고 있습니다.어떻게 내 .aspx 웹 페이지에서 기본 siteLayout을 사용할 수 있습니까?

이 호출이 @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 

을 그리고 면도기 레이아웃이있는 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를 사용할 수있는 모듈로 분해하는 것입니다.

관련 문제