微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET MVC视图内部视图 型号查看注意:

如何解决ASP.NET MVC视图内部视图 型号查看注意:

我是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}")

所以回到您的示例:渲染brand的详细信息时,您想显示一些与modelcar相关的信息。

假设:

  • 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()时需要更改文件路径。

  • 您可能想重用_CarBrandDetail中的http://localhost/brands/1。在这种情况下,您可以查看brand/{id}页面,然后调用_CarBrandDetail部分视图。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。