2010-03-11 6 views
1

을 프로그래밍하는 것은 그래서 여기 내가 원래 젠드 프레임 워크에 집중 한 프로젝트에서 일하고 있어요 거래ASP.NET MVC는

이다,하지만 지금은 ASP.NET MVC에 들어가 원하는 소년은 그냥 좋은 말할 수 나는 아직 시작 단계에 있지만 훌륭한 시작입니다. 그러나 데이터를 내 컨트롤러에서 마스터/레이아웃 페이지로 전달하는 데 문제가 있습니다. 이제 젠드에서 내가 만든 도우미를 통해 어떤 컨트롤러와 액션을 사용할 수 있는지 확인할 수 있습니다. 이제이 ASP.NET MVC 응용 프로그램에서 동일한 기능을 구현하려고합니다. 그래서 나의 마스터 레이아웃 페이지는 내가 어느 컨트롤러에 있는지 알며 따라서 그것을위한 네비게이션을 높입니다. 구조 탐색을 사용하여 직선형 사용자 정의 HTML을 사용하고 있습니다.

이 특정 주제에 대한 도움을 주시면 감사하겠습니다.

답변

0

ASP.Net 사이트에 게시 된 일부 비디오를 살펴볼 수 있습니다. 당신이 요구하는 테크닉을 보여주는 튜토리얼과 스크린 캐스트가 있습니다. http://www.asp.net/mvc

2

에 오신 것을 환영합니다 ... 나는이 시나리오 1 2의 방법으로 처리 조치가 호출되고 그런 다음

<% string action = ViewContext.RouteData.Values["action"].ToString(); %> 

, 당신은 당신의 탐색 링크에 체크를하고 필요한 경우 클래스를 추가 할 수 있습니다

<% if (action == "Home") { Response.Write(" class='current'"); }%> 
,

2)는 각 뷰와 함께 문자열을 보내고 내 마스터 페이지에서 클래스로 body 태그에 첨부 :

.home #nav li a { 
    /* something different */ 
} 
:
public ActionResult Home() 
{ 
    ViewData["BodyClass"] = "home"; 

    return View(); 
} 


<body class="<%= (string)ViewData["BodyClass"] %>"> 

이 그런 다음 CSS를 당신이 뭔가를 할 수 있습니다

희망이 도움이됩니다.

+0

나는 두 번째 접근법을 좋아한다. –

+0

거대한 사이트에서이 기술을 사용하는 것을 상상할 수 없습니다. –

+0

거대한 사이트에서 이것을 사용하는 것을 상상할 수 없기 때문에이 답변을 투표 해 보셨습니까? –

0

당신이 당신의 masterpage에 데이터를 전달하려면, 나는 다음과 같은 제안 :

뷰 모델 기본 클래스를 작성, 예를 모든 페이지가 viewmodels를 만들 경우, masterpage의 1 행

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<ViewModelBase>" %> 

예를 들어, 수정

public class ViewModelBase 
{ 
    public List<MenuItem> MenuItems { get; set; } 
    public string SomeRandomData { get; set; } 
} 
public class TestViewModel : ViewModelBase 
{ 
    public string Message { get; set; } 
} 

컨트롤러 예를

public class TestController : Controller 
{ 
    public ActionResult Index() 
    { 
     TestViewModel model = new TestViewModel(); 
     // passing selected menuitem as parameter 
     model.MenuItems = createMenuItems("test"); 
     model.Message = "Hello World!"; 
     return View(model); 
    } 
    private List<MenuItem> createMenuItems(string selected) 
    { 
     // ... 
    } 
} 

Viewpage의 첫번째 행은

당신이 viewpage :)에서 masterpage 및 TestViewModel에서 ViewModelBase에 액세스 할 수 있습니다 지금
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<TestViewModel>" %> 

추가

<add namespace="yourproject.Models"/> 

에 web.config의 'namespaces'섹션을 추가하면 모든 뷰 페이지에 import 문을 입력 할 필요가 없습니다.