2017-04-08 4 views
0

모든 MVC 5가 예상대로 작동하는 전통적인 웹 사이트가 있는데 모든 것이 올바르게 렌더링되고 정상적으로 작동합니다.MVC 5에서 렌더링 된 중첩 폴더를 올바르게 얻는 방법 C#

대시 보드 및이 대시 보드를 추가하여 폴더 구조를 MVC 5 C# 웹 사이트의 나머지 부분과 격리 된 곳으로 설정하려고합니다. 그러나 레이아웃 엔진이 부분 뷰를 찾을 수 없다는 서버 오류가 발생합니다.

이제보기 자체가로드되어 테스트를 통과하고 올바른보기가 반환되면 레이아웃 엔진이 중첩 된 부분보기를 찾을 수없는 경우 문제가 발생합니다.

나는 MVC 5에 대한 완전한 이해가 없다는 사실 때문에이 책을 잃어 버렸다.

앞에서 언급 한 것처럼 모든 것이 완벽하게 작동하지만 상자 폴더 구조를 만들 때 Partial Views를 삽입하면 MVC 5 엔진에서 이러한 중첩 된 부분 뷰를 찾을 수 없습니다.

이러한 부분 뷰를 중첩하는 이유는 명백합니다. 실제 웹 사이트를 사용자 대시 보드보기에서 분리하고 있습니다.

색인 파일을 가리키는 작업 링크를 누르면이 본문이 작동하지만 본문,보기에서 중첩 된 부분보기를 찾을 수 없습니다.

무엇이 여기에 있습니까? 나는이 질문에 가능한 한 쉽게 답할 수있는 충분한 정보를 제공하기를 희망한다. 실제 사용자 대시 보드 색인을로드

서버가 NO NO, 제대로이 일을하지 않을 말합니다 경우 실제 부분 지문이로드

@{ 
    ViewBag.Title = "Your Dashboard"; 
    Layout = "~/Views/Shared/UserDashboard/_Layout_Dashboard.cshtml"; 
} 
<!-- Content Wrapper. Contains page content --> 
<div class="content-wrapper"> 

작동합니다.

This Snapshot Is The _Layout

가 여기에 정확한 서버 오류입니다,이 구현하는 적절한 방법에 나를 알려 주시기 바랍니다. 당신이 @Html.Partial("_PartialHeader_Dashboard")를 사용하여 부분 뷰를 포함 할 때

Server Error in '/' Application. 
The partial view '~/Views/Shared/UserDashboard/_PartialHeader_Dashboard' was not found or no view engine supports the searched locations. The following locations were searched: 
~/Views/Shared/UserDashboard/_PartialHeader_Dashboard 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: The partial view '~/Views/Shared/UserDashboard/_PartialHeader_Dashboard' was not found or no view engine supports the searched locations. The following locations were searched: 
~/Views/Shared/UserDashboard/_PartialHeader_Dashboard 

Source Error: 


Line 26: <script src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>*@ 
Line 27: <body> 
Line 28:  @Html.Partial("~/Views/Shared/UserDashboard/_PartialHeader_Dashboard") 
Line 29:  @Html.Partial("~/Views/Shared/UserDashboard/_PartialLeftNav_Dashboard") 
Line 30:  @RenderBody() 


Source File: D:\Users\Erik\Documents\visual studio 2017\Projects\BuilderBits\BuilderBits\Views\Shared\UserDashboard\_Layout_Dashboard.cshtml Line: 28 

Stack Trace: 


[InvalidOperationException: The partial view '~/Views/Shared/UserDashboard/_PartialHeader_Dashboard' was not found or no view engine supports the searched locations. The following locations were searched: 
~/Views/Shared/UserDashboard/_PartialHeader_Dashboard] 
    System.Web.Mvc.HtmlHelper.FindPartialView(ViewContext viewContext, String partialViewName, ViewEngineCollection viewEngineCollection) +327 
    System.Web.Mvc.HtmlHelper.RenderPartialInternal(String partialViewName, ViewDataDictionary viewData, Object model, TextWriter writer, ViewEngineCollection viewEngineCollection) +264 
    System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName, Object model, ViewDataDictionary viewData) +91 
    System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName) +32 
    ASP._Page_Views_Shared_UserDashboard__Layout_Dashboard_cshtml.Execute() in D:\Users\Erik\Documents\visual studio 2017\Projects\BuilderBits\BuilderBits\Views\Shared\UserDashboard\_Layout_Dashboard.cshtml:28 
    System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +197 
    System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +105 
    System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +90 
    System.Web.WebPages.<>c__DisplayClass3.<RenderPageCore>b__2(TextWriter writer) +232 
    System.Web.WebPages.HelperResult.WriteTo(TextWriter writer) +10 
    System.Web.WebPages.WebPageBase.Write(HelperResult result) +80 
    System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action`1 body) +63 
    System.Web.WebPages.WebPageBase.PopContext() +237 
    System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +98 
    System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +235 
    System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +107 
    System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +291 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +56 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +420 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +52 
    System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +173 
    System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100 
    System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27 
    System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +36 
    System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +22 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26 
    System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10 
    System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28 
    System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9765045 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155 

답변

3

은 MVC 프레임 워크는 MVC 규칙에 따라 아래의 위치에서 부분적인 전망을로드하려고합니다. ~/Views/Shared/

  1. ~/Views/DirectoryWithYourCurrentControllerName/
  2. 이 프레임 워크는 당신이 (뷰 엔진을 확장하고보기 파일 위치를 지정하여 그렇게 할 수있는 프레임 워크를 얘기하지 않는 한 부분보기는 하위 디렉토리 안에 아무 생각이 없습니다 ViewLocationFormats). 맞춤 위치를 추가하기 만하면됩니다.

    당신은이 옵션

    전화 (shared 아래) 디렉토리 이름을 가진 부분보기

    @Html.Partial("UserDashboard/_PartialHeader_Dashboard") 
    

    또는

    를 사용하여 전체 파일 경로

    @Html.Partial("~/Views/Shared/UserDashboard/_PartialHeader_Dashboard.cshtml") 
    

    하지만 더 좋음 옵션은 Areas입니다. 논리적으로 물건 (컨트롤러/뷰 등)을 함께 유지하기위한 영역이 있습니다.

+0

도움을 주셔서 대단히 감사 드리며 지역을 설명하는 링크를 제공해 주실 수 있습니까? –

+0

링크가 이미 답변의 마지막 문장에 있습니다. :) – Shyju