Как я могу использовать свой siteLayout по умолчанию с моей веб-страницей .aspx? - PullRequest
1 голос
/ 05 марта 2012

У меня есть файл _siteLayout.cshtml по умолчанию с вызовом @RenderBody() в центре, между некоторой разметкой и кодом Razor.

У меня есть сложная страница .aspx, в которой есть некоторая разметка, которую я хочу визуализировать, где сделан этот вызов @RenderBody().

По сути, я хотел бы сделать такой вызов внутринового файла:

@{  
    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>

Ответы [ 2 ]

0 голосов
/ 05 марта 2012

Самое простое решение - визуализировать эту страницу в iFrame из частичного представления. Это вариант, но в целом это плохая практика в подобных случаях (см .: Считается ли iframes «плохой практикой»? )

Правильный способ справиться с этим - разбить aspx на модули, которые вы можете использовать - как ответил Дарин.

0 голосов
/ 05 марта 2012

Вы можете преобразовать разделы, которые вы хотите повторно использовать с этой .aspx страницы, в .ascx частичные значения и затем отобразить их:

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

И если вы хотите использовать представление WebForms с RazorМакет, я боюсь, что это невозможно.Хотя возможно и обратное: с использованием представления Razor с главной страницей WebForms .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...