下面的部分已经确定,但还没有被渲染的页面布局“〜/查看/共享/ _Layout.cshtml”(Th

2019-10-29 07:05发布

我有这样的ActionResult:

[EncryptedActionParameter]
[CheckExternalUserRegisterSigned]
public ActionResult ExpedienteIIT(int idExpediente)
{
    ExpedienteContainerVM model = this.GetExpedienteVMByIdExpediente(idExpediente);
    return View("ExpedienteIIT", model);
}

ExpedientIIT查看: https://jsfiddle.net/pq16Lr4q/

_Layout.cshtml: https://jsfiddle.net/1ksvav43/

所以,当我回来的观点,我得到这个错误:

我试图把console.logs,看看如果视图渲染,但不会呈现......

好吧错误是在这里:

@model PortalSOCI.WEB.ViewModels.IIT.ExpedienteContainerVM


    @{
        ViewBag.Title = String.Format(PortalSOCI.WEB.Resources.ExpedienteIIT.TituloExpedienteIIT, Model.Expediente.NumeroExpediente);
    }

    @section JavaScript  /// <-------------------- ERROR
    {
        @Html.Raw(ViewBag.message)
    @

你能帮我么。

Answer 1:

编辑:阅读你的代码后,我觉得自己像

@RenderSection("scripts", required: false)

应该

@RenderSection("JavaScript", required: false)

我认为会给你麻烦的另一件事是,你定义在你的身上“JavaScript”部分中的事实。 这意味着,如果你的任何意见,你忘了补充一点,

@section JavaScript
{
    @Html.Raw(ViewBag.message)
}

你会得到一个Section JavaScript not defined错误。 在你的情况,感觉就像节的定义应该是在_layout.cshtml

这个错误很可能意味着您已经定义JavaScript部分,但没有任何地方呈现它。 你需要调用@RenderSection("JavaScript")某处你layout.cshtml

@section JavaScript
{
}

将让你创建一个名为“JavaScript”部分中,但实际上是“打印”这一节的内容,以输出HTML文件(将被发送到客户端),你需要调用@RenderSection("JavaScript") 该部分的内容将被打印在何处的呼叫RenderSection位于。



Answer 2:

你需要把缺少的部分你的内部ExpedienteIIT视图。 根据错误信息,即缺失部分是JavaScript

代码示例,把这个在您的视图底部:

@section JavaScript
{
    // put javascript here
}

编辑:

感谢您提供您的观看次数的代码示例。 有之间如何在布局网页JavaScript部分的定义以及它是如何被包含在您的视图不匹配。

为了解决这个问题,请执行下列之一:

  • 在你_Layout页,更改@RenderSection("scripts", required: false)@RenderSection("JavaScript", required: false) ,OR
  • 在你ExpedienteIIT查看,更改@section JavaScript@section scripts

最重要的是,这两个应该匹配。



文章来源: The following sections have been defined but have not been rendered for the layout page “~/Views/Shared/_Layout.cshtml”