在MVC3中通过使用viewbag在一个view中使用多个model是怎样使用的啊?

在MVC3中通过使用viewbag在一个view中使用多个model是怎样使用的啊?,第1张

首先创建导演表,在这里起名Author,在Models下添加。内容有:

public class Author

{

public int AuthorID { getset}

public string AuthorName { getset}

public virtual ICollection<Movie>Movie { getset}

}

public class Movie

{

public int ID { getset}

public string Title { getset}

public DateTime ReleaseDate { getset}

public string Genre { getset}

public decimal Price { getset}

public string Rating { getset}

public int AuthorID { getset}

public virtual Author Author { getset}

}

在Movie中添加了洞岁AuthorID和一个Author类雀孙型的Author。AuthorID在纳岁睁这里就成为了外键。

VIEW调用:

@foreach(var item in model)

{

@Html.DisplayFor(modeItem =>item.Author.AuthorName)

}

」但是該範例是在使用PartialView來實作,這次要介紹使用 ViewModels 來傳遞的方式

在祥迟扒過去的經驗中了解到使用強式型別的好處因此開發的過程中都應該要盡量使用強式型別,MVC的官網範例中並沒有直接示範在一個 View 中使用兩個 Model 的例子,因此很多初次進入 ASP.NET MVC 的朋友都會為此而困擾,基本上我們可以利用 ViewData來傳旦伍遞但是如前文說的,鬆散型別不是開發中的第一考慮,因此將其要傳遞的物件包起來而形成的 ViewModels 就是一個很好的方式。

在專案中開啟一個新的資料夾取名為 ViewModels 並且新增一個 Class 內容如下

using System

using System.Collections.Generic

using System.Linq

using System.Web

namespace MvcApplication.ViewModels{public class demoshopViewModels{public IEnumerable<商店 shop { getset}

public IEnumerable<演示 demo { getset}}}

利用此谨昌 ViewModels 將兩個不同的 Model 包起來。

而在 View 內的使用方式沒什麼不同

<%@ Page Language=C# MasterPageFile=~/Views/Shared/Site.Master Inherits=System.Web.Mvc.ViewPage<MvcApplication.ViewModels.demoshopViewModels %

<asp:Content ID=aboutContent ContentPlaceHolderID=MainContent runat=server

<%foreach (var item in Model.shop){//這裡是shop Models} %

<%foreach (var item in Model.demo){//這裡是demo Models} %</asp:Content

看了以上的 Code,應該不難發現使用多個 Models 是很 OK 的事情。但是在開發的過程中或許並不想使用強式型別來傳遞(要開 VideModels 就有人懶)因此下面在提一下使用 ViewData的方式。

使用 ViewData 就是需要在 Controller 內實作需要的資料,範例如下

public ActionResult About() {

ViewData[shop] = 商店

ViewData[demo] = 演示

//以上兩個是範例,真實情況下你應該有自己的呼叫資料的方式。

return View()}

因為無法直接繼承所以在View的使用上有些許改變。

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

<asp:Content ID=aboutContent ContentPlaceHolderID=MainContent runat=server

<%var shop = ViewData[shop] as IEnumerable<商店%

<%var demo = ViewData[demo] as IEnumerable<演示%

--%


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11977809.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存