2009-05-10 2 views
1

Прежде всего, я действительно новичок в идеологии MVC Asp.Net.Asp.Net MVC - View -> Создать 2 объекта

Я хотел бы знать, как я могу создать два объекта (модели) в один вид?

, потому что, если я смотрю на заголовок обзора он унаследует от одной модели:

\ <% Название @ Page = "" Language = "C#" MasterPageFile = "~/Views/Shared/Site.Master" Inherits = "System.Web.Mvc.ViewPage"%>

Итак, если, например, я хочу создать в том же представлении (страницу Aspx) MyObjectA и объект MyObjectB, как лучше всего это обработать?

Я надеюсь, что я ясно ...

ответ

3

Если у вас есть объект модели Person, а другие позволяют сказать Comment, а затем в том же виде вы хотели бы, чтобы отобразить лицо, деталь и комментарии добавлены к этому человеку вы можете создать промежуточный объект, иногда называемый «объектом передачи данных» или «объектом просмотра». Итак, я создаю простой класс:

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

.. теперь я могу вернуть результат моей деятельности как типа PersonDetailDTO вместо сказать Person. Затем представление строго напечатано на PersonDetailDTO, что облегчает мне доступ к данным PersonDetail и коллекциям комментариев.

Например, я использовать объект вида, как это один из моих частичных просмотров:

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

.. и заголовок частичный вид выглядит следующим образом:

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

.. и так я могу получить доступ к типизированным данным из этого класса вида в виде, который легко выглядит так:

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

Если «создание» означает «прохождение» двух объектов ЕКТС от контроллера к мнению, вы должны создать новый класс, который будет содержать два объекта и передать его от контроллера к представлению:

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

Определение View будет выглядеть следующим образом:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyModel>" %> 

В контроллере, вы можете создать объект как

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

с точки зрения, вы бы доступ к объектам, как

var myObjectA = Model.ObjectA; 
Смежные вопросы