0

我是 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 中,如何在视图中获取此视图?

提前致谢

4

1 回答 1

0

您需要设置一些局部视图并在渲染汽车细节时使用它。

什么是局部视图

是内景。一个视图文件中可以有多个局部视图

如何使用?

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

回到你的例子:你想显示一些与渲染细节相关brandmodel 信息car

假如说:

  • 的视图模型http://localhost/brands/1CarBrandViewModel
  • 的视图模型http://localhost/models/2CarModelViewModel

模型

对于您的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()

  • 您可能希望重用您的_CarBrandDetailin http://localhost/brands/1。在这种情况下,您可以为brand/{id}页面创建一个视图,然后调用_CarBrandDetail部分视图。

于 2020-09-13T14:15:22.237 回答