knockout.js InvalidOperationException:以下部分已定义,但尚未由位于“/Views/Shared/UserLayout.cshtml”的页面呈现

qyyhg6bp  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(88)

我正在尝试将ASP.NET MVC项目转换为ASP.NET Core MVC。我做了大部分的工作,但陷入了一个奇怪的问题。
我的项目有一个视图User.cshtml和一个布局页面UserLayout.cshtml,基于一个API调用,我在ASP.NETMVC中通过return View("User", "UserLayout");返回视图及其母版页。
该方法需要一个视图名称和一个主名称。这个重载在ASP.NET Core MVC中不再存在,所以我在User.cshtml页面的顶部设置了如下布局:

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

并从我的控制器返回视图名称。
现在我的布局页面包含了剑道标签条,在它的内容中,我渲染了在UserLayout.cshmtl@section HomeTab {}中定义的像@RenderSection("HomeTab", true)这样的部分。这在ASP.NET MVC项目中完全正常,但是当我运行ASP.NET Core MVC项目时,我得到了这个异常:
InvalidOperationException:以下部分已定义,但尚未由位于“/Views/Shared/AgentLayout. cshtml”的页面呈现:'HomeTab'。要忽略未呈现的节,请调用IgnoreSection(“sectionName”)。
我已经尝试删除该部分,将required属性更改为false,但错误仍然存在。似乎我不需要将视图从.NET转换为.NET Core,但这件小事让我卡住了。

b1zrtrql

b1zrtrql1#

我找到了一个解决这个问题的方法,把它贴在这里,给任何遇到同样问题的人。
我在我的剑道标签条@{}上面创建了一个剃刀代码块,在代码块关闭后,我添加了一个.Render()函数,到目前为止,我的代码按预期运行。

@{
                    Html.Kendo().TabStrip()
                        .Name("tabstrip")
                        .Events(events => events
                        .Select("onTabSelected")
                        .Activate("onTabActivated")
                        .ContentLoad("onTabContentLoaded")
                        .Error("onTabError")
    
                        )
                        .Animation(animation =>
                        {
                            animation.Enable(false);
                        })
                        .Items(tabstrip =>
                        {
                            if (!ViewBag.isOffline)
                            {
                                tabstrip.Add().Text("Home")
                        .HtmlAttributes(new { id = "hometabid" })
                        .Selected(true)
                        .ImageUrl(Url.Content("~/Content/Images/HomeTabIcon.png")).ImageHtmlAttributes(new { id = "hometabimgid" })
                        .Content(
                    @<text>
                               @RenderSection("HomeTab",false)
                            </text>
                    ).ContentHtmlAttributes(new { @style = "overflow: auto;" });
                            }
                            }
                        }).Render();
                        }
                @RenderBody()

相关问题