Asp.net-Mvc

無法直接請求文件“~/Views/Position/Edit.cshtml”,因為它呼叫了“RenderSection”方法

  • October 18, 2011

我試圖將我可以在部分中重複使用的所有東西分開,這樣我維護起來會更容易。

但是我得到了這個異常:無法直接請求文件“~/Views/Position/Edit.cshtml”,因為它呼叫了“RenderSection”方法

我創建了一個名為sections.cshtml 的文件,其內容如下:

@section scripts{
   <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
   <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
}

在 _layout.cshtml 文件中,我將其更改為:

<head>
   <meta charset="utf-8" />
   <title>@ViewBag.Title</title>
   <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
   @RenderSection("scripts", required:false)
   @*<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
   <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>*@
</head>

當我轉到瀏覽器中的視圖並檢查它只顯示的原始碼時:

<head>
   <meta charset="utf-8" />
   <title>Edit</title>
   <link href="/Content/Site.css" rel="stylesheet" type="text/css" />
</head>

RenderSection 只能存在於佈局文件(即母版頁)中……其目的是允許您可以直接請求的頁面以佈局的各個部分為目標(佈局是所有選擇使用它的頁面共有的文件)並提供這些不同部分的內容。

如果您想將此部分分離為可在許多頁面上重複使用的內容,則應將其放在部分中並將 rendersection 呼叫替換為類似

@Html.Partial("Scripts")

引用自:https://stackoverflow.com/questions/7808377