gpt4 book ai didi

asp.net-mvc - 在 View 中呈现包含 MVC 继承的模型

转载 作者:行者123 更新时间:2023-12-02 14:45:36 24 4
gpt4 key购买 nike

我有一组不同类型的“好处”,但都继承自 BaseBenefit类(class)。那List<BaseBenefit>然后用于 View 。为了展示它们,最佳实践是什么?

我想通过 if's in the view 进行检查,但这似乎打破了“愚蠢的 IU”的规则。不过,我可以为每个好处包含一个属性,以便它具有 enum因为它是真实类型,但我仍然需要用 if 来检查哪个是哪个。

有什么想法吗?

最佳答案

您可以使用显示模板。所以在主视图中:

@Html.DisplayFor(x => x.Benefits)

哪里Benefits是类型 List<BaseBenefit> 的 View 模型上的属性。现在您所要做的就是为不同的可能类型定义显示模板:

~/Views/Shared/DisplayTemplates/SpecificBenefit1.cshtml :

@model SpecificBenefit1
...

~/Views/Shared/DisplayTemplates/SpecificBenefit2.cshtml :

@model SpecificBenefit2
...

显示模板的位置和名称很重要。它们必须位于 ~/Views/Shared/DisplayTemplates 文件夹中,或者如果它们不会在 Controller 之间重用,您也可以在 ~/Views/SomeController/DisplayTemplates 中定义它们。文件夹。模板的名称必须与列表中元素的类型相同。

当您在主视图中对可枚举属性使用 DisplayFor 时,ASP.NET MVC 将自动为此列表中的每个元素调用相应的显示模板。

关于asp.net-mvc - 在 View 中呈现包含 MVC 继承的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8455392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com