2016-08-22 4 views
0

MVC 프로젝트에 두 개의 다른 로그인 페이지가 있으며 사이트에 액세스하는 데 사용되는 URL에 따라 관련 로그인 페이지가 표시되어야합니다 (특정 클라이언트 요구 사항).URL을 기반으로 MVC에서 시작 페이지/레이아웃을 어떻게 설정할 수 있습니까?

if (Context.Request.Path.Contains("LoginG")) 
    { 
     Layout = "~/Views/Shared/_LayoutG.cshtml"; 
    } 
    else { 
     Layout = "~/Views/Shared/_Layout.cshtml"; 
    } 

하지만 내가 어떻게 URL을 기반으로 초기보기/방문 페이지를 설정할 수 있습니다

은 내가 _ViewStart에 로그인 페이지의 이름을 기준으로 사용되는 _layout 정의 할 수 있어요?

또는 IIS에서이 작업을 수행 할 수 있습니까?

: 모두 로그인 페이지 내가 _ViewStart에 다른 레이아웃을 적용하기 위해이었다 그것을 다른 이름을 부여했다 유일한 이유로, 이름이 아닌 실제로 동일합니다! 로그인 ActionResult에서

+0

나는 [custom razor view engine]을 구현했다. (과거에는 가지고 있었다.) (http://stackoverflow.com/questions/9838766/how-do-i-implement-a-custom-razorviewengine-to-find -views-in-non-standard-locati)이 문제를 해결하기 위해 – Liam

답변

0

두 번째 버전의 로그인 페이지 만 남겨두고 로그인 페이지의 두 번째 버전을 제거하고 _ViewStart에서 사이트가 액세스되는 도메인을 기준으로 레이아웃 페이지를 선택하여 문제를 해결했습니다.

if (Request.Url.AbsoluteUri.ToString().ToLower().Contains("xxxx")) 
{ 
    Layout = "~/Views/Shared/_LayoutG.cshtml"; 
} 
else 
{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

다른보기를 반환하기 위해 컨트롤러를 업데이트해야하는 번거 로움을 줄이고 모든 페이지에서 작동합니다.

1

, 당신은에서 오는 (과 성공적인 로그인 후 리디렉션됩니다) URL을 나타내는 returnUrl 매개 변수를 얻고 같이, 그 값에 따라 다른보기를 반환 :

public ActionResult Login(string returnUrl) 
    { 
     if (returnUrl == "url1") 
     { 
      return View("ViewName1"); 
     } 

     return View("ViewName2"); 
    } 
관련 문제