ASP.NET MVC 如何在一個 View 內傳遞多個 Model
2个回答
展开全部
」但是該範例是在使用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 { get; set; }
public IEnumerable<演示 demo { get; set; }}}
利用此 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<演示;%
--%
在過去的經驗中了解到使用強式型別的好處因此開發的過程中都應該要盡量使用強式型別,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 { get; set; }
public IEnumerable<演示 demo { get; set; }}}
利用此 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<演示;%
--%
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询