2

내 목표는 데이터베이스 데이터에서 생성 될 _layout에 <Script> 행을 갖는 것입니다. 나를위한 1 단계는 단순히 페이지의 "헤드"부분에 주석 줄을 표시하는 것입니다. 나는 이것을 잘하는 테스트 프로그램을 가지고있다. 코드를 내 사이트로 복사하면 "경로 테이블의 경로가 제공된 값과 일치하지 않습니다."라는 메시지가 나타납니다. 내가 웹을 실행할 때. 오류가 _layout의 @ Html.Action ("OVars", "MyO") 문을 가리키고 있습니다."경로 테이블에 경로가 없습니다. 제공된 값이 일치합니다."라는 _layout 오류에 @ Html.Action을 추가합니다.

나는 Glimpse와 RouteDebugger를 사용하려고 시도했지만이 경로가 실제로 생성되는 것과 어떤 이유로 실패했는지에 대한 데이터를 얻을 수 없다. RouteDebugger의 출력에는 약 30 ~ 40 개의 경로 목록이 있으며 그 중 "Default"경로 만 Global.asax.cs에 있습니다. 그래서 나는이 경로가 코드의 다른 곳에서 만들어지고 있다고 가정 할 수 있습니다.

@Html.Action("OVars","MyO") 

컨트롤러가 포함되어

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace MySite.Controllers 
{ 
    public class MyOController : Controller 
    { 
     // ChildActionOnly will not allow direct displaying of this page 
     [ChildActionOnly] 
     public ActionResult OVars() 
     { 
      return PartialView("_OVars"); 
     } 
    } 
} 

_OVars의 partialview :

<!-- Test comment simply for displaying --> 

Global.asax.cs 것 보면 무엇에

public static void RegisterRoutes(RouteCollection routes) 
{ 
    ViewEngines.Engines.Clear(); 
    ViewEngines.Engines.Add(new RazorViewEngine()); 

    routes.IgnoreRoute("{resource}.ico"); 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults     
    ); 
} 

어떤 제안 도움. 내가 알기로는 변경해야 할 필요가 있다는 것을 모르는 매개 변수 집합이 있습니다.

감사합니다.

답변

3

해결되었지만 ("영역, 배울 점이 더 많습니다").

@Html.Action("OVars","MyO")@Html.Action("OVars","MyO", new { area = string.Empty })으로 변경했습니다.

오류 메시지가 나타날 때까지 계속해서 코드를 변경했습니다. "이 오류는 해당 지역의보기 내부에서 Html.Action 도우미를 사용하는 경우에도 발생할 수 있습니다. 당신이 구체적으로 말하지 않는 한 항상 그 영역을 앞자리로 사용합니다. " 제시된 예제는 @ Html.Action 문에 , new { area = string.Empty }을 추가하는 것입니다.

이제 @ Html.Action이 올바르게 작동하고 컨트롤러가 정보에 대한 데이터베이스에 액세스하도록 할 수 있습니다.

다음 학습 내용은 "이해 영역"입니다.

+0

감사합니다. 나는 문자열의 영역 이름을 제공하고 책상의 머리를 두드려서 작동하지 않는 이유를 알아 냈습니다. :) – JMK