리디렉션 컨트롤러(지만 서로 다른 마스터)를 사용하여 포괄적인 와일드카드

StackOverflow https://stackoverflow.com/questions/237440

문제

나는 문제는 그것에 의하여 내가 원하는 표시하는 뷰가 다르게(다른 마스터 페이지)에 따라,어디서 왔는지 알지 못하는 곳에 시작하...

여러가지 경로를 따라잡는 다양한 종류의 url 에 포함하는 다른 구조물입니다.

아래 코드 조각에,나는 제품의 경로,그리고 그 다음은 파트너 사이트는 수도로 이동하는 제품 페이지자고 말하는 이 파트너 펩시콜,그리고 그들은 그들의 브랜드 마스터 페이지에서 보다 우리 자신이 기본 스타일입니다.고 말할 수 있습니다 내가로 이동 products/cola.htm.이동 동일한 url partners/pepsi/products/cola.htm, 고 PartnerRedirect 것을 처리할 수 있는 url 을 기반으로 와일드카드를 번역해서 url 과 와일드카드(이 경우,"products/cola.htm")로 컨트롤러 작업,그리고 앞으로 사용자에,(지만 단순히 변경 석 페이지에서 보기).

routes.MapRoute(
    "Product",
    "products/{product}.htm",
    new { controller = "Product", action = "ShowProduct" }
);

routes.MapRoute(
    "ProductReview",
    "products/{product}/reviews.htm",
    new { controller = "Product", action = "ShowProductReview" }
);

routes.MapRoute(
    "Partner",
    "partners/{partner}/{*wildcard}",
    new { controller = "Partners", action = "PartnerRedirect" }
);

이것이 가능한가요?고 할 수 있다면,어떻게 해야 하나요?

많은 사전에 감사합니다.

도움이 되었습니까?

해결책

에서 당신의 파트너 컨트롤러 당신은 왜 쿠키를 설정을 나타내는 파트너가 당신을 보여주고 싶고,다이렉션하는 와일드카드 섹션의 경로입니다.는 방법을 보여줄 수 있습 같은 파트너의 레이아웃을 위해 이후의 모든 페이지를 보고있습니다.

내가 알지 못하는 경우 이것은 당신이 찾고있는 무엇,그러나 그것은 옵션이 될 수 있습니다.

다른 팁

나는 같은 문제

public class FriViewPage : ViewPage
{
    public override string MasterPageFile
    {
        get
        {
            return "~/Views/Shared/Site.Master"; // base.MasterPageFile;
        }
        set
        {
            if (ViewData["agent"].ToString() == "steve")
                base.MasterPageFile = "~/Views/Shared/Site.Master";
            else
                base.MasterPageFile = "~/Views/Shared/Site2.Master";
        }
    }
}

다음 단지 모든망에서 상속 FriViewPage 대신 ViewPage

수은 악마의 작품을 넣어 일부에서 코드의 파트너 보기 코드 숨김을 찾는 URL 에서 설정한 다음 마스터 프로그래밍 방식으로 페이지에 있는가?

나는지 확인할 수 있는 방법을 사용하여 프로그래밍 방식으로 바꾸 마스 페이지로 내가 해본 적이 없는지만,나는 그것이 가능한(그것은 아마 재산에서 페이지).

할 수 있는 가치 요청으로 또 다른 질문입니다.

Acutally 의 MasterPageFile getter 나타나지 않을 것이라고

을 변경할 수 있습 MasterPage 을 수정하여 ViewResult 전용하여 렌더링을 수행합니다.예를 들어 컨트롤러 작업을 할 수 있:

public ActionResult TestMP(int? id)
{
    ViewData["Title"] = "MasterPage Test Page";
    ViewData["Message"] = "Welcome to ASP.NET MVC!";
    ViewResult result = View("Index");
    if (id.HasValue)
    {
        result.MasterName = "Site2";
    }
    return result;
}

작업을 수행할 수 있습니다 같은 일이는 액션으로 필터 위한 보다 일반적인 솔루션입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top