簡體   English   中英

ASP.NET MVC 視圖內部視圖

[英]ASP.NET MVC View inside view

我是 ASP.NET MVC 的新手,我想問一下如何制作“級聯”視圖(我不知道這是否正確)。

讓我們看看:我有一個返回汽車品牌的視圖,假設在 http://localhost/brand 中。

如果我去http://localhost/brand/1 ,我會用代碼 1 獲得品牌的詳細信息

我可以用每個品牌的模型創建另一個視圖,假設http://localhost/modelshttp://localhost/models/2我得到模型詳細信息

但我想要的是訪問http://localhost/car/1/2並獲取該模型的一些詳細信息。 但一定是品牌和型號的關系

在 ASP.NET MVC 中,如何在視圖中獲取此視圖?

提前致謝

您需要的是設置一些局部視圖並在渲染汽車細節時使用它。

什么是局部視圖

這是一個視圖里面的視圖。 一個視圖文件中可以有多個局部視圖

如何使用?

@Html.Partial("{your view name}", "{your model}")

回到你的例子:你想在渲染car細節時顯示一些與brandmodel相關的信息。

假如說:

  • http://localhost/brands/1的視圖模型是CarBrandViewModel
  • http://localhost/models/2的視圖模型是CarModelViewModel

模型

對於您的car詳細信息頁面,您需要定義一個CarDetailViewModel

public class CarViewModel
{
    public CarBrandViewModel CarBrand { get; set; }
    public CarModelViewModel CarModel { get; set; }
    /* some other fields for your car */
}

而這個CarViewModel將是http://localhost/car/1/2的視圖模型。

看法

您需要定義 3 個視圖文件:

  • 汽車細節的視圖文件,例如CarDetail.cshtml
  • 品牌信息的部分視圖,例如Shared\\_CarBrandDetail.cshtml
  • 模型信息的局部視圖,例如Shared\\_CarModelDetail.cshtml

_CarBrandDetail.cshtml文件應該接受一個CarBrandViewModel對象作為模型:

// in your _CarBrandDetail.cshtml...
@model CarBrandViewModel

<!-- your code for rendering brand information ->

_CarModelDetail.cshtml定義類似的東西。 這次你應該設置:

@model CarModelViewModel

現在,在CarDetail.cshtml

// in your CarDetail.cshtml...
@model CarViewModel

@* render your brand's details *@
@{
    Html.RenderPartial("_CarBrandDetail", Model.CarBrand);
}

@* render your model's details *@
@{
    Html.RenderPartial("_CarModelDetail", Model.CarModel);
}

<!-- your code for rendering other details of the car -->

筆記:

  • 需要@{ }對來包圍Html.RenderPartial(); 稱呼。

  • 沒有必要把所有的局部視圖都放在Shared文件夾下。 但是,如果將局部視圖放在Views下的其他位置,則需要在調用Html.RenderPartial()時更改文件路徑。

  • 您可能希望在http://localhost/brands/1重用您的_CarBrandDetail 在這種情況下,您可以為brand/{id}頁面創建一個視圖,然后調用_CarBrandDetail部分視圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM