【问题标题】:Looking for a way to implement a polymorphic view in ASP.NET Core寻找一种在 ASP.NET Core 中实现多态视图的方法
【发布时间】:2019-09-25 05:29:57
【问题描述】:

我正在开发一个 ASP.NET MVC Core Web 应用程序,它会有很多类似的视图。每个视图只是一个简单的表单,其中包含标签和控件对列表。 已构建“对象”编辑器模板,以便根据视图模型属性自动生成此类视图的内容。 每个视图基本上只有一行代码: @Html.EditorFor(m => m) 每个视图模型都派生自一个基类。

有没有办法摆脱重复的视图和控制器操作?

理想情况下,我希望只有一个视图,其中模型是基本模型类,以及一个接收该基本模型的控制器操作。

【问题讨论】:

  • 您可以使用部分视图/视图组件来做到这一点。

标签: asp.net model-view-controller polymorphism


【解决方案1】:

Himanshu 的评论引导我将 Partials 用于子类,并使用基类作为主视图的模型。您也许可以根据给定的模型使用反射/属性注释来填充视图,尽管我没有尝试过。 我成功尝试的是使用非抽象的基类,因此不会在子类中复制属性,然后使用泛型,如...

List<T> GetChildClasses<T>() where T : BaseClass;

由控制器方法调用并提供视图模型,然后像这样显示......

@model MyApp.Models.BaseClass
<div class="show_base_class_properties_here">
</div>
@if(Model is ChildClass)
{
    @await Html.PartialAsync("_ChildPartial", Model);
}
<div class="whatever_comes_next">
</div>

我怀疑有更好的方法,但这可行。显然在一个视图文件中只能有一个@model

【讨论】:

    猜你喜欢
    • 2014-06-01
    • 2018-01-25
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    相关资源
    最近更新 更多