[asp.net-mvc] 동작 링크에서 영역 이름을 지정하는 방법은 무엇입니까?

내 mvc 2 앱의 2 가지 영역에서 사용하는 공유 마스터 페이지가 있습니다. 마스터 페이지에는 현재 컨트롤러와 작업을 지정하는 작업 링크가 있지만 잘못된 영역에 있으면 링크가 작동하지 않습니다. 영역 매개 변수를 사용하는 actionlink에 과부하가 발생하지 않습니다. 가능합니까?



답변

알아 냈어 ..

Html.ActionLink("Link Text", "ActionName", "ControllerName", new { Area = "AreaName" }, new{})


답변

이 직후에 다른 문제가 발생할 수 있다고 생각한 부분이 있습니다. 영역 내에서 영역이 아닌 작업으로 연결해야하는 경우 영역을 빈 문자열로 지정해야합니다.

예를 들어, 일부 MVC 코드를 영역으로 옮기고 사이트의 다른 페이지를 참조하는 마스터 페이지에서 URL을 업데이트해야한다는 것을 알았습니다.

영역에없는 URL을 지정하려면 다음을 사용하십시오.

Html.ActionLink("home", "Index", new { area = "", controller = "Home" })


답변

사용하다:

 Html.ActionLink("Text", "ActionName", "ControllerName", new { Area = "AreaName" }, null)

참고 : 네 번째 매개 변수는 route Values를 전달하는 것이며, 빈 매개 변수를 전달하면 루트 구조를 고려하고 적절한 값을 전달하면 영역으로 사용됩니다.

또한 사용하는 것을 잊지 마세요 null또는 new{}통과하기 때문에 5 매개 변수로 null또는 new {}행동 링크를 만드는 동안 방법을 과부하가되지 않습니다 (text,action,controller,route data)또는 (text,action,controller,route data,html attribute)너무 적절한 방법을 사용


답변

MVC2 제공 area="root"에서 다음과 같이 나를 위해 일했습니다.

Html.ActionLink("Home", "Index", "Home", new { Area = "root" }, new{})


답변

뷰에서 영역을 많이 사용하는 경우 할 수있는 깔끔한 트릭은 상단에서 변수로 정의하는 것입니다.

@{ var awesomeArea = new { area = "Awesome" }; }

@Html.Action("Something", "Somewhere", awesomeArea)
@Html.ActionLink("Stuff", "FooBar", awesomeArea)


답변

다음은 사용자가 사전 구축 된 인증 시스템에 링크 할 수있는 솔루션으로 제시 한 것입니다.

내 각 영역에는 _LoginPartial.cshtml 파일 버전이 있습니다.

응용 프로그램이 단일 버전의 파일을 사용하도록 할 수는 있지만 단일 로그인 부분을 사용하려고 할 때 계속 오류가 발생합니다.

원래 생성 된 loginpartial을 약간만 수정 한 것이지만 특정 영역에서 사용하면 잘 작동하는 것 같습니다.

다음은 모두 사용되는 코드입니다.

@if (Request.IsAuthenticated)
{
    <text>
    Hello, @Html.ActionLink(User.Identity.Name, "Manage", "Account", new { area = "" }, htmlAttributes: new { @class = "username", title = "Manage" })!
    @using (Html.BeginForm("LogOff", "Account", new { area = "" }, FormMethod.Post, new { id = "logoutForm" }))
 {
        @Html.AntiForgeryToken()
        <a href="javascript:document.getElementById('logoutForm').submit()">Log off</a>
 }
    </text>
}
else
{
    <ul>
        <li>@Html.ActionLink("Register", "Register", "Account", new { area = "" }, htmlAttributes: new { id = "registerLink" })</li>
        <li>@Html.ActionLink("Log in", "Login", "Account", new { area = "" }, htmlAttributes: new { id = "loginLink" })</li>
    </ul>
}


답변

당신은 지역에서 정보, 홈, 연락처 등의 표준 웹 응용 링크를 사용할 수없는 경우. 당신은 라인을 변경

@Html.ActionLink("Ana Sayfa", "Index", "Home", new { area = "" }, new {})

…에서

Views \ Shared_Layout.cshtml