Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在.aspx网页中使用默认的siteLayout?_C#_Asp.net_Asp.net Mvc_Visual Studio_Razor - Fatal编程技术网

C# 如何在.aspx网页中使用默认的siteLayout?

C# 如何在.aspx网页中使用默认的siteLayout?,c#,asp.net,asp.net-mvc,visual-studio,razor,C#,Asp.net,Asp.net Mvc,Visual Studio,Razor,我有一个默认的_siteloayout.cshtml文件,它的中心是对@RenderBody()的调用,位于一些标记和代码之间 我有一个复杂的.aspx页面,其中包含一些我希望在调用@RenderBody()时呈现的标记 基本上,我想在一个新文件中进行如下调用: @{ Layout = "/Shared/_SiteLayout.cshtml"; @RenderPage(Default.aspx); } 但是,在这种情况下,不可能调用.aspx页面 有什么简单的解决办法吗 D

我有一个默认的_siteloayout.cshtml文件,它的中心是对
@RenderBody()
的调用,位于一些标记和代码之间

我有一个复杂的.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>

姓名:

说明: 开始时间: 结束时间: 姓名:
说明: 开始时间: 结束时间:
您可以将要重用的部分从
.aspx
页面外部化为
.ascx
部分,然后呈现它们:

@{  
    Layout = "/Shared/_SiteLayout.cshtml";
}
<div>
    @Html.Partial("foo.ascx")
</div>
some other contents
@{
Layout=“/Shared/_siteloayout.cshtml”;
}
@Html.Partial(“foo.ascx”)
其他一些内容

如果您想使用带有Razor布局的WebForms视图,恐怕这是不可能的。但也有可能相反:.

最简单的解决方案是从局部视图在iFrame中呈现该页面。这是一种选择,但一般来说,在这种情况下,这种做法是不好的(请参阅:)


正确的处理方法是将aspx分解成您可以使用的模块-正如Darin回答的那样。

谢谢您的回答。在这种情况下,是否可以调用@Html.Partial(“Foo.aspx”)并简单地呈现我希望调用的整个.aspx页面?这将是理想的。不,这是不可能的,因为我猜aspx页面会覆盖一些内容占位符,而这些内容占位符在Razor布局中是没有的。因此,只需将该部分外部化为一个部分并重用该部分即可。谢谢您的回复。我对你所说的“将部分外部化为部分并重用部分”感到有点困惑。我在方法的顶部有一行,Default.aspx文件包含大多数HTML,而Default.aspx.cs文件完全包含C。对于初学者提出的问题我深表歉意,我只是在处理这些问题时遇到了一些困难。@SimonKiely,ohhhh,不。在ASP.NET MVC视图中,您没有任何代码。您的页面定义应该如下所示:
。请注意视图必须如何派生自
System.Web.Mvc.ViewPage
。您是否正在尝试重用某些旧Web表单?如果,是的,你可以忘记它。我所说的外部化到ASCX部分的意思是将要重用的视图部分移动到一个单独的部分中,但是如果你说你的ASPX页面包含主要的C#代码,那就没有什么意义了。再次感谢你的解释。我相信我没有任何暗号。我已尝试将文件重命名为.ascx并使用@Html.Partial来呈现它,但是这会导致错误-CS1061:“System.Web.WebPages.Html.HtmlHelper”不包含“Partial”的定义。我将编辑我上面的问题,以包括我目前为止的代码,你能看到可能出了什么问题吗?再次非常感谢你的帮助。