C# MVC-嵌套局部视图
当我在我的C# MVC-嵌套局部视图,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,当我在我的MVC应用程序中嵌套部分视图时,我收到一个错误(“应用程序中的服务器错误”)。视图单独工作正常,但嵌套时则不行。我的理解是这样做是可以的,那么我做错了什么 本质上,我试图在我的\u Layout.cshtml中使用分部作为子布局 这是我的主要布局-\u layout.cshtml <!DOCTYPE html> <html> <head>...</head> <body style="padding-top: 80px;">
MVC
应用程序中嵌套部分视图时,我收到一个错误(“应用程序中的服务器错误”)。视图单独工作正常,但嵌套时则不行。我的理解是这样做是可以的,那么我做错了什么
本质上,我试图在我的\u Layout.cshtml
中使用分部作为子布局
这是我的主要布局-\u layout.cshtml
<!DOCTYPE html>
<html>
<head>...</head>
<body style="padding-top: 80px;">
<div class="container-fluid">
<div class="row">
<div id="myTab" class="col-lg-12 col-md-12 col-sm-12">
...
<div class="tab-content">
<div class="tab-pane fade" id="search">
@Html.Partial("~/Areas/Search/Views/Shared/_SearchLayout.cshtml")
</div>
</div>
</div>
</div>
</div>
@RenderBody()
@RenderSection("scripts", required: false)
</body>
</html>
...
...
@Html.Partial(“~/Areas/Search/Views/Shared/\u SearchLayout.cshtml”)
@RenderBody()
@RenderSection(“脚本”,必需:false)
这是第一个局部视图(\u SearchLayout)。如果我删除了partials和@RenderBody,就不会有错误
<div class="container-fluid">
@Html.Partial("_PolicySearch")
@Html.Partial("_ClaimSearch")
</div>
@RenderBody()
@Html.Partial(“\u PolicySearch”)
@Html.Partial(“\u ClaimSearch”)
@RenderBody()
此局部视图嵌套在第一个局部视图(\u SearchLayout)中:
索赔查询
改用Html.RenderPartial改用Html.RenderPartial问题是@RenderBody()
。这只能在版面中调用,当以这种方式使用时,\u SearchLayout.cshtml
不是,不管它的名称如何
关于ASP.NET MVC中的布局、部分和视图,需要记住的重要一点是它们都是视图。唯一不同的是它们的使用方式。在本例中,您将
\u SearchLayout.cshtml
视图用作分部,分部不能使用@RenderBody()
问题是@RenderBody()
。这只能在版面中调用,当以这种方式使用时,\u SearchLayout.cshtml
不是,不管它的名称如何
关于ASP.NET MVC中的布局、部分和视图,需要记住的重要一点是它们都是视图。唯一不同的是它们的使用方式。在本例中,您使用的是
\u SearchLayout.cshtml
视图作为部分视图,而部分视图不能在第一个部分视图中使用@RenderBody()
:
我还建议将局部视图重命名为不包含单词“Layout”的视图,以避免视图类型之间的不匹配。在第一个局部视图中:
我还建议将局部视图重命名为不包含单词“Layout”的名称,以避免视图类型之间的不匹配。局部视图位于何处?您需要以与第一个路径相同的方式编写路径@{Html.RenderPartial(“~/Areas/Search/Views/BLAH/BLAH/_PolicySearch”)},并意识到需要将其命名为whitin braces@{Html.RenderPartial(“ViewName”);}。它们都在同一个文件夹中。我试过这个-{Html.RenderPartial(“~/Areas/Search/Views/Shared/_PolicySearch.cshtml”)}和这个{Html.RenderPartial(“_PolicySearch”)}。这两个都不起作用。您错过了这个@{Html.RenderPartial(“~/Areas/Search/Views/Shared/_PolicySearch”)}尝试了这个,但没有得到任何帮助。谢谢局部视图在哪里?您需要以与第一个路径相同的方式编写路径@{Html.RenderPartial(“~/Areas/Search/Views/BLAH/BLAH/_PolicySearch”)},并意识到需要将其命名为whitin braces@{Html.RenderPartial(“ViewName”);}。它们都在同一个文件夹中。我试过这个-{Html.RenderPartial(“~/Areas/Search/Views/Shared/_PolicySearch.cshtml”)}和这个{Html.RenderPartial(“_PolicySearch”)}。这两个都不起作用。您错过了这个@{Html.RenderPartial(“~/Areas/Search/Views/Shared/_PolicySearch”)}尝试了这个,但没有得到任何帮助。谢谢这是我的想法,但是当我删除@RenderBody()并保留部分视图时,我仍然得到了错误。然后还有一些其他问题在起作用。假设这是在开发过程中发生的,您应该会得到一个带有stacktrace的黄色死亡屏幕。如果您在生产环境中,您应该使用ELMAH之类的工具来记录错误,这样您仍然可以在那里看到stacktrace。或者,如果您有Visual Studio 2013,则可以进行远程调试。请参阅:。除此之外,您可以随时将
临时添加到Web.config,但这在生产中可能有点危险。没有死亡的黄色屏幕,Elmah会以“未发现错误”作为响应。Fiddler显示一个302响应“对象移动到”。后面是一个500。我很困惑。这只是在生产中发生的,还是你在开发中也看到了这种行为?如果您可以在developmentdebug中复制它,并使用断点来尝试查明故障(在分部调用之前添加一个断点,然后在分部调用内部添加一个断点,等等)。继续,直到你能找到一条确切的线,在那里所有的地狱都消失了。这是我想的,但是当我删除@RenderBody()并保留部分视图时,我仍然得到了错误。然后还有一些其他问题在起作用。假设这是在开发过程中发生的,您应该会得到一个带有stacktrace的黄色死亡屏幕。如果您在生产环境中,您应该使用ELMAH之类的工具来记录错误,这样您仍然可以在那里看到stacktrace。或者,如果您有Visual Studio 2013,则可以进行远程调试。请参阅:。除此之外,您可以随时将
临时添加到Web.config,但这在生产中可能有点危险。没有死亡的黄色屏幕,Elmah会以“未发现错误”作为响应。Fiddler显示一个302响应“对象移动到”。后面是一个500。我很困惑。这只是在生产中发生的,还是你在开发中也看到了这种行为?如果您可以在developmentdebug中复制它,并使用断点来尝试查明故障(在分部调用之前添加一个断点,然后在分部调用内部添加一个断点,等等)。继续联合国
<div class="row top-buffer search-outline form-horizontal">
<div class="col-md-1 search-icon-size text-primary">
<i class="glyphicon glyphicon-heart"></i>
</div>
<div class="col-md-1 search-icon-size text-primary">
<h4>Claim Search</h4>
</div>
</div>