2009-05-10 3 views
1

우선 MVC Asp.Net 이데올로기를 처음 접했습니다.Asp.Net MVC -보기 -> 2 개체 만들기

하나의보기에 두 개의 개체 (모델)를 어떻게 만들 수 있습니까?

때문에 나는 그것이 하나 개의 모델에서 상속있어보기 헤더를 보면 :

< \ % @ 페이지 제목 = ""언어 = "C#을"MasterPageFile = "~/조회/공유/Site.Master"상속 = "System.Web.Mvc.ViewPage"%

예를 들어 MyObjectA와 개체 MyObjectB를 동일한보기 (Aspx 페이지)에 만들려는 경우이를 처리하는 가장 좋은 방법은 무엇입니까? 내가 명확했다 희망

...

답변

3

당신은 모델 객체 Person을 가지고 있고 다른 하나는 Comment를 말할 수 다음 같은보기에 당신이 그 사람에 추가 사람 세부 사항 및 의견을 표시하려는 경우 때로는 '데이터 전송 객체'또는 '뷰 객체'라고하는 중간 객체를 생성 할 수 있습니다. 지금은 형 PersonDetailDTO으로 내 행동의 결과를 반환하는 대신 Person을 말할 수 ..

public class PersonDetailDTO 
{ 
    public Person PersonDetail {get; set;} 
    public IList<Comment> Comments {get; set;} 
} 

: 그래서, 나는 간단한 클래스를 만듭니다. 그런 다음보기는 강력하게 PersonDetailDTO으로 입력되므로 PersonDetail 데이터 및 설명 콜렉션에 쉽게 액세스 할 수 있습니다.

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<KsisOnline.Web.Controllers.HomeController.IndexViewData.AnnouncementsPartialViewData>" %> 

.. 등 :

예를 들어, 나는 부분보기 중 하나로이 같은 뷰 객체를 사용

 public class AnnouncementsPartialViewData 
     { 
      public IList<Announcement> Announcements { get; set; } 
      public object MonthlyPlannerRouteVals { get; set; } 
      public object PreSchoolRouteVals { get; set; } 
      public object ElementaryRouteVals { get; set; } 
     } 

.. 상기 부분 뷰 헤더는 다음과 같다 난과 같이 쉽게보기에서 해당 뷰 클래스에서 입력 된 데이터에 액세스 할 수 있습니다 :

<% if (Model.Announcements.Count == 0) 
3

이 '통과'이 OBJ를 뜻 '창조'에 의해

public class MyModel 
{ 
    public MyObjectA ObjectA { get; set; } 
    public MyObjectB ObjectB { get; set; } 
} 

보기 정의는 다음과 같을 것이다 :

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyModel>" %> 
ECTS 뷰에 컨트롤러에서, 당신은 두 개의 개체를 포함하고보기 컨트롤러에서 전달하는 새로운 클래스를 생성한다 컨트롤러에서

, 당신은

같은 개체에 액세스 할 뷰에서

...(in controller action) 
return new MyModel { ObjectA = new MyObjectA(), ObjectB = new MyObjectB() }; 

같은 개체를 만드는 것

var myObjectA = Model.ObjectA;