![](/img/trans.png)
[英]ASP.NET MVC, create View method that would return multiple objects to the view
[英]Asp.Net MVC - View -> Create 2 objects
首先,我對MVC Asp.Net意識真的很陌生。
我想知道如何在一個視圖中創建兩個對象(模型)?
因為如果我查看視圖頭,它是從一個模型繼承的:
\\ <%@頁面標題=“”語言=“ C#” MasterPageFile =“〜/ Views / Shared / Site.Master” Inherits =“ System.Web.Mvc.ViewPage”%>
因此,例如,如果我想在同一視圖(Aspx頁面)中創建MyObjectA和對象MyObjectB,那么處理該問題的最佳方法是什么?
我希望我已經清楚了...
如果您有一個模型對象“ Person
,另一個讓我們說“ Comment
,然后在同一視圖中要顯示人的詳細信息和添加到該人的注釋,則可能需要創建一個中間對象,有時稱為“數據傳輸對象”或“查看對象”。 因此,我創建了一個簡單的類:
public class PersonDetailDTO
{
public Person PersonDetail {get; set;}
public IList<Comment> Comments {get; set;}
}
..現在我可以將我的操作結果返回為PersonDetailDTO
類型,而不是說Person
。 然后,將視圖也強類型PersonDetailDTO
,這使我很容易訪問PersonDetail數據和Comments集合。
例如,我對部分視圖之一使用這樣的視圖對象:
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)
如果通過“創建”是指將兩個對象從控制器“傳遞”到視圖,則應創建一個包含兩個對象的新類,並將其從控制器傳遞到視圖:
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.