[英]ASP.NET MVC View inside view
我是 ASP.NET MVC 的新手,我想問一下如何制作“級聯”視圖(我不知道這是否正確)。
讓我們看看:我有一個返回汽車品牌的視圖,假設在 http://localhost/brand 中。
如果我去http://localhost/brand/1
,我會用代碼 1 獲得品牌的詳細信息
我可以用每個品牌的模型創建另一個視圖,假設http://localhost/models
和http://localhost/models/2
我得到模型詳細信息
但我想要的是訪問http://localhost/car/1/2
並獲取該模型的一些詳細信息。 但一定是品牌和型號的關系
在 ASP.NET MVC 中,如何在視圖中獲取此視圖?
提前致謝
您需要的是設置一些局部視圖並在渲染汽車細節時使用它。
這是一個視圖里面的視圖。 一個視圖文件中可以有多個局部視圖。
@Html.Partial("{your view name}", "{your model}")
回到你的例子:你想在渲染car
細節時顯示一些與brand
和model
相關的信息。
假如說:
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.