Les sections suivantes ont été définies, mais n'ont pas été rendus pour la mise en page “~/Views/Shared/SiteLayout.cshtml”: “Scripts”

J'ai un simple point de vue:

@model BootstrapTest4.Models.Account.CambioDeClave

@{
    Layout = "~/Views/Shared/SiteLayout.cshtml";
}

<h2>@Model.Title</h2>

@using (Html.BeginForm()) {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    <fieldset>

        <div class="editor-label">
            @Html.LabelFor(model => model.Pass1)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Pass1)
            @Html.ValidationMessageFor(model => model.Pass1)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Pass2)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Pass2)
            @Html.ValidationMessageFor(model => model.Pass2)
        </div>

        <p>
            <input type="submit" value="Cambiar Clave" />
        </p>
    </fieldset>
}

@section Scripts {
    @System.Web.Optimization.Scripts.Render("~/bundles/jqueryval")
}

ce point de vue a été faite par le Mvc4 échafaudage de système (modèle d'édition) et depuis que j'utilise certains dataannotations dans mon modèle, il utilise les Scripts Bundle.

l'erreur que j'obtiens est le suivant:
Les sections suivantes ont été définies, mais n'ont pas été rendus pour la mise en page "~/Views/Shared/SiteLayout.cshtml": "Scripts"

de la recherche, j'ai trouvé que la plupart des gens à résoudre le problème en ajoutant ceci à leur disposition:

    @if (IsSectionDefined("Scripts"))
{
    RenderSection("Scripts",false);
}

J'ai ajouté que le bloc juste avant la balise de ma mise en page, mais j'obtiens toujours la même erreur.

comme demandé: toute ma Mise en page:

@model BootstrapTest4.Models.IMenu
@using BootstrapTest4.Utils.Helpers
@using BootstrapTest4.Utils
@{
Layout = null;
}
<!DOCTYPE html>
@{
Model.usr = (UsuarioWebCliente)Session["DatosUsr"];
Model.usrDrogSelec = Html.DrogSeleccionada(Model.usr);
var Lista = Html.GeneraComboDrogs2(Model.usr, Model.usrDrogSelec.cod_drogueria);
}
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="~/Scripts/jquery-1.9.1.js"></script>
<script src="~/Scripts/bootstrap.js"></script>
<!-- Bootstrap -->
<link href="~/Content/bootstrap/bootstrap.css" rel="stylesheet" media="screen">
</head>
<body style="height: 100%;  ">
<div class="wrapper">
<div>
<div id="whitebar">
<div class="container">
<div class="row">
<div class="col-md-6">
</div>
<div class="col-md-6" style="text-align: right">
@Model.usr.DatUsrs.desc_usuario - @Model.usr.DatUsrs.codigo_ident - @Html.ActionLink("Cerrar Sesion","Logout","Account")
</div>
</div>
</div>
</div>
<div id="bluebar">
<div class="container">
<div class="row">
<div class="col-md-4">
@Html.DropDownListFor(x => x.usr.DatUsrs.cod_drogueria, new SelectList(Lista, "Value", "Text"), new { @id = "DDLMENU", data_url = Url.Action("CambiarDrog", "Menu") })
</div>
<div class="col-md-3">
Monto Consumido:
<label id="SALDO">
@(Model.usrDrogSelec.saldo_actual == 0 ? "0.00" : Convert.ToDecimal(Model.usrDrogSelec.saldo_actual).ToString("#,##.00"))
</label>
</div>
<div class="col-md-3">
Hora Corte: XXXXX
</div>
<div class="col-md-2">
Día Corte:
<label id="DIA">
@Model.usrDrogSelec.dia_corte
</label>
</div>
</div>
</div>
</div>
<nav class="navbar navbar-default" role="navigation">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">
<img style="max-height: 20px;" src="~/Content/Images/1381797224_home.png" />
</a>
</div>
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav">
@foreach (var item in Model.MenuCollection)
{
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">@item.Name <b class="caret"></b></a>
@if (item.Children.Count > 0)
{
<ul class="dropdown-menu">
@foreach (var childItem in item.Children)
{
<li>@Html.ActionLink(childItem.Name, childItem.Action, childItem.Controller)</li>
}
</ul>
}
</li>
}
</ul>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-cog"></span><b class="caret"></b></a>
<ul class="dropdown-menu">
<li>@Html.ActionLink("Droguería Principal","PrioridadDrogueria","ReportesPrioridadDrogueria")</li>
<li><a href="#">Mensajería</a> </li>
<li> @Html.ActionLink("Cambio de Clave", "CambiarClave", "Account")</li>
<li><a href="#">Actualizar Datos</a></li>
</ul>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</nav>
<div id="Content" style="height: 100%; ">
@RenderBody()
</div>
</div>
<div class="push"></div>
</div>
<div class="footer">
<div class="row">
<div class="col-md-12 footer">Test</div>
</div>
</div>
@if (IsSectionDefined("Scripts"))
{
RenderSection("Scripts",false);
}
</body>
</html>
N'dispositions dans ces exemples hériter de certains autres modèles?
la mise en page n'a pas hérité de toutes les autres mises en page. il comporte les éléments suivants: Mise en page = null;
Montrer votre mise en page en vue, on dirait que vous êtes exigeant la Section Script, de ne pas le rendre facultatif.
En outre, vérifier si la section est défini n'est pas nécessaire. En passant false dans le deuxième paramètre à RenderSection, vous êtes déjà en train de dire que la section est facultative.
J'ai inclus le fichier de mise en page comme demandé.

OriginalL'auteur mmilan | 2013-12-03