Reputation: 123
Ok, im probably doing this wrong... But in my main _Layout I have this:
<div id="navigation">
@RenderSection("Navigation")
</div>
which points to this in my Index.cshtml view:
@section Navigation{
<-- Need this to point to Views/Shared/Navigation.cshtml -->
}
But I don't want to have a huge file with all my code in it, so I need to know how to point to a file called "Navigation.cshtml" inside of this section - basically so I have all my sections in separate, independent files.
I tried just doing @RenderPage("Navigation.cshtml") in the _Layout instead of @RenderSection, and that gives errors.
--EDIT--
If I add this instead of @RenderSection()
<div id="navigation">
= @RenderPage("~Views/Shared/Navigation.cshtml")
</div>
I get this:
The file "~/Views/Shared/~Views/Shared/Navigation.cshtml" could not be rendered, because it does not exist or is not a valid page.
--EDIT--
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>
Upvotes: 5
Views: 22144
Reputation: 3228
If you want to keep the @RenderSection("Navigation")
in your _Layout
you can try below code in your view.
@section Navigation{
@Html.Partial("~/Views/Shared/Navigation.cshtml")
}
OR you can change the _Layout
as below.
<div id="navigation">
@Html.Partial("~/Views/Shared/Navigation.cshtml")
</div>
Upvotes: 5
Reputation: 62488
Try with full path of view or you can use Html.Partial()
or @Html.RenderPartial()
:
<div id="navigation">
@RenderPage("Navigation.cshtml")
</div>
<div id="navigation">
@Html.Partial("~/Views/Shared/Navigation.cshtml")
</div>
<div id="navigation">
@{ Html.RenderPartial("~/Views/Shared/Navigation.cshtml"); }
</div>
Upvotes: 10
Reputation: 101
Try just to render a page "Views/Shared/Navigation.cshtml" as a partial view like this:
<div id="navigation">
@Html.RenderPartial("Navigation")
</div>
Upvotes: 0