문제

Phil Haack 지역 (1) Idea + Steve Sanderson의 조정 (2)을 사용하고 싶은 새로운 프로젝트를 진행하고 있습니다. 영역 (FOO)에 대한 액션 링크가있는 간단한 루트보기가 있습니다. 생성 된 URL에는 적절한 영역이 있지만 끝에 루트 컨트롤러 (Bar)가 추가됩니다. 내 루트보기 코드는 다음과 같습니다.

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Index</h2>

<%= Html.ActionLink("Foo Index Page", "Index", new { area="Foo" } )%>

</asp:Content>

그리고 다음은 다음과 같은 URL이 있습니다.

로컬 호스트 : 6494/foo/bar

왜 "/bar"가 거기에 있는지 아십니까?

(1): haacked.com/archive/2008/11/04/areas-in-aspnetmvc.aspx

(2): blog.codeville.net/2008/11/05/app-areas-in-aspnet-mvc-take-2/

도움이 되었습니까?

해결책

해결책을 찾았습니다. 나는 그것이 적절하다고 생각하지 않으므로 개선을 요청할 것입니다. 컨트롤러 이름을 지정하면 URL이 올바르게 형성 될 수 있습니다. 즉

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Index</h2>

<%= Html.ActionLink("Foo Index Page", "Index", new { area="Foo", controller="Baz" } )%>

</asp:Content>

이 작업을 수행하면 URL이 정확했습니다.

로컬 호스트 : 6494/foo

이것이 왜 문제입니까? Phil의 데모는 HomeController라는 이름의 컨트롤러를 사용합니다. html.actionLink () 메소드가 URL을 구성하는 방법을 모르겠습니다. 그러나 마치 내가 가지고 있지 않은 Homecontroller의 기본 사례에 의존하는 것처럼 보입니다.

컨트롤러가 홈이 아닌 컨트롤러를 기본값으로 허용하는 방법에 대한 제안이있는 사람이라면 답장하십시오. 감사

다른 팁

가지고 있지 않습니다 Home 기본 컨트롤러 이름으로 간단히 기본 경로를 변경하십시오.

@joe

APP_START/ROUNECONFIG.CS 파일에서 기본 컨트롤러에 대한 값을 집에서 원하는대로 변경해야합니다.

routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "NAME_OF_YOUR_HOME_CONTROLLER", action = "Index", id = "" }  // Parameter defaults
        );
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top