如何插入" File1.cshtml"进入主视图中的一个部分

时间:2014-08-09 16:29:03

标签: asp.net-mvc asp.net-mvc-4 razor

好吧,我可能做错了......但在我的主要_Layout我有这个:

<div id="navigation">
            @RenderSection("Navigation")
        </div>

在我的Index.cshtml视图中指出了这一点:

@section Navigation{
  <-- Need this to point to Views/Shared/Navigation.cshtml -->
}

但是我不希望有一个包含我所有代码的大文件,所以我需要知道如何在本节内部指向一个名为“Navigation.cshtml”的文件 - 基本上所以我有我所有的部分在单独的独立文件中。

我尝试在_Layout而不是@RenderSection中执行@RenderPage(“Navigation.cshtml”),这会产生错误。

- 编辑 -

如果我添加此而不是@RenderSection()

<div id="navigation">
          = @RenderPage("~Views/Shared/Navigation.cshtml")
        </div>

我明白了:

The file "~/Views/Shared/~Views/Shared/Navigation.cshtml" could not be rendered, because it does not exist or is not a valid page.

- 编辑 -

FULL _Layout.cshtml:

   <!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript">    </script>
</head>

<body>
<div id="wrapper">

    <div id="content">
        <!-- BANNER -->
        <div id="banner">

        </div>
        <!-- NAVIGATION -->
        <div id="navigation">
         @RenderPage("Navigation.cshtml")
        </div>
        <!-- MAIN DISPLAY -->
        <div id="main">
            @RenderBody()
        </div>
        <!-- FOOTER -->
        <div id="footer">

        </div>
    </div>
</div>

3 个答案:

答案 0 :(得分:4)

尝试使用完整的观看路径,或者您可以使用Html.Partial()@Html.RenderPartial()

<div id="navigation">
                @RenderPage("Navigation.cshtml")
</div>

Html.Partial():

<div id="navigation">
            @Html.Partial("~/Views/Shared/Navigation.cshtml")
</div>

Html.RenderPartial():

<div id="navigation">
            @{ Html.RenderPartial("~/Views/Shared/Navigation.cshtml"); }
</div>

答案 1 :(得分:3)

如果您希望将@RenderSection("Navigation")保留在_Layout中,可以在视图中尝试以下代码。

@section Navigation{
    @Html.Partial("~/Views/Shared/Navigation.cshtml")
}

或者您可以更改_Layout,如下所示。

<div id="navigation">
    @Html.Partial("~/Views/Shared/Navigation.cshtml")
</div>

答案 2 :(得分:0)

尝试仅渲染页面&#34; Views / Shared / Navigation.cshtml&#34;作为这样的部分观点:

<div id="navigation">
    @Html.RenderPartial("Navigation")
</div>