2016-07-21 4 views
0

저는 .NET으로 시작해서 테스트 애플리케이션을 작성하려고합니다. 현재 DefaultControllerIndex() 조치 방법을 사용하여 홈페이지를 설정했습니다. 이것은 예상대로 작동하며 홈페이지는 간단합니다. www.domain.com.MVC ActionLink advice

나는 Terms()Privacy() 조치 방법을 사용하여 동일한 DefaultController에서 2 개의 새 페이지 (이용 약관 및 개인 정보 보호)를 만들었습니다.

URL을 www.domain.com/terms 및 www.domain.com/privacy로 찾아 볼 수 있기를 원합니다.

<li>@Html.ActionLink("Terms of Service", "Terms", "Default")</li>을 사용할 때 작동하지만 www.domain.com/Default/privacy의 URL로 이동합니다.

각 페이지마다 별도의 컨트롤러를 만들어야합니까, 아니면 @html.ActionLink 헬퍼를 잘못 사용해야합니까? 이전에 <li><a href="~/privacy">Privacy Policy</a></li>을 사용했지만이 방법이 좋지 않다는 것을 알고 있습니까?

또한 링크를 소문자로 설정하는 방법이 있습니까?

내 컨트롤러 코드 : 이들은 HomeController에 있다면

public class DefaultController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult Terms() 
    { 
     return View(); 
    } 

    public ActionResult Privacy() 
    { 
     return View(); 
    } 
} 
+1

'DefaultController'에 페이지를 넣고 도우미가 동작 링크를 올바르게 찾으면 다른 컨트롤러가 필요하지 않습니다 –

+0

컨트롤러 코드를 게시 할 수 있습니까? –

+0

위의 컨트롤러 코드를 추가했습니다. 현재는 모두 매우 기본적인 – Gavin5511

답변

3

난 당신이 같은 문제가 거라고 생각하지 않는다. 그러나, 나는 당신이 RouteConfig 파일을 사용하여이 문제를 얻을 수 있다고 생각 :

routes.MapRoute(
    name: "Default", 
    url: "{Action}/{Id}", 
    defaults: new { controller = "Default", Action = "Index", Id = UrlParameter.Optional } 
); 

routes.MapRoute(
    name: "Generic", 
    url: "{controller}/{Action}/{Id}", 
    defaults: new { Action = "Index", Id = UrlParameter.Optional } 
); 
+0

나는 이것을 시험해 보았고 위에 나와있는 예제에서 작동하지만 다른 모든 컨트롤러의 라우팅을 변경한다. DefaultController에 대한 경로 만 매핑 할 수있는 방법이 있습니까? – Gavin5511

+0

@ Gavin5511 기본 라우팅을 그대로 둘 수 있지만 먼저 이것을 정의하십시오. – ediblecode

+0

좋습니다. 당신이 내가 이것을 어떻게 할 수 있는지 보여주기 위해 당신의 대답을 업데이트 할 수있는 기회? – Gavin5511

1

내가 싶은 것은 URL에 컨트롤러 이름을 숨길 믿습니다. 그런 경우, 귀하의 질문은 여기에 대한 답변 :

ASP.NET MVC - Removing controller name from URL

나는이 도움이 :) 당신은 엔드 포인트에 특정 경로를 제공하는 라우팅 속성 사용할 수 있습니다

0

바랍니다. 에서

[Route("terms")] 
public ActionResult Terms() 
{ 
    return View(); 
} 
[Route("privacy")] 
public ActionResult Privacy() 
{ 
    return View(); 
} 

당신의 RouteConfig.cs 당신은 다음의 코드로 라우팅 속성을 설정해야합니다 : domain.com/privacy 및 domain.com/terms 같은 URL을 생성한다 이제 routes.MapMvcAttributeRoutes();

@Url.Action() 또는 @Html.ActionLink으로 생성 된 URL을