1

まず第一に、私は MVC Asp.Net のイデオロギーにまったく慣れていません。

2 つのオブジェクト (モデル) を 1 つのビューに作成する方法を教えてください。

ビュー ヘッダーを見ると、1 つのモデルから継承されているためです。

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

たとえば、同じビュー (Aspx ページ) で MyObjectA とオブジェクト MyObjectB を作成したい場合、それを処理する最善の方法は何ですか?

私は私が明確だったことを願っています...

4

2 に答える 2

3

モデル オブジェクトPersonと別のオブジェクトがありComment、同じビューで人物の詳細とその人物に追加されたコメントを表示したい場合は、「データ転送オブジェクト」または「ビューオブジェクト」。だから、私は単純なクラスを作成します:

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

PersonDetailDTO.. これで、アクションの結果を say ではなく型として返すことができますPerson。次に、ビューも強く型付けされPersonDetailDTOているため、PersonDetail データと Comments コレクションに簡単にアクセスできます。

たとえば、部分ビューの 1 つに次のようなビュー オブジェクトを使用します。

        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)
于 2009-05-10T18:41:54.010 に答える
3

「作成」とは、コントローラーからビューに 2 つのオブジェクトを「渡す」ことを意味する場合、2 つのオブジェクトを含む新しいクラスを作成し、それをコントローラーからビューに渡す必要があります。

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>" %>

コントローラーでは、次のようなオブジェクトを作成します

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

ビューから、次のようなオブジェクトにアクセスします

var myObjectA = Model.ObjectA;
于 2009-05-10T18:44:50.027 に答える