c# - 如何在 View 中设置通用模型?

标签 c# asp.net-mvc generics

我有一个像这样的模型类:

  public class GenericModel<T> where T : BaseTest
  {
      //Ctor

      public List<T> TestList{get;set;}
  }

我可以正常使用它,因为我在我的 Controller 和 View 中设置了它。 但是我有一个可以被所有 Controller 使用的局部 View 。

我想知道我是否可以在局部 View 中做这样的事情:

@model GenericModel<T>

没有指定通用类型。我能在这里做什么?使用界面或其他东西?

最佳答案

不可能用T 来定义它,因为它需要一个实际的类型来跟在@model 语句之后。

根据我的经验,在 visual studio 中使用重构,为 GenericModel 提取接口(interface),比如 IGenericModel,为 BaseTest 提取接口(interface),比如 IBaseTest ,那么你的模型语句就变成了:

@model IGenericModel<IBaseTest>

更新:

澄清一下,要提取的接口(interface)可能类似于(注意 out 的变化,如果你使用它会让你的生活更轻松):

public interface IGenericModel<out T> where T : IBaseTest
{
    IEnumerable<T> GetAll(); // just as an example
}

public interface IBaseTest
{
    T Property { get; }
}

关于c# - 如何在 View 中设置通用模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23379200/

相关文章:

c# - 如何在 Blazor 服务器端注销?

c# - C# BinaryReader 中的 Java DataInputStream 方法

asp.net-mvc - ASP.NET MVC 应用程序自定义错误页面未显示在共享托管环境中

java - 为什么这一行不能编译 List<Object> l = new ArrayList<String>()?

java - 使用泛型为 MongoDB POJO 创建包装器

java - 需要有关 java 中复杂结构的建议(DAO 和服务层链接/耦合)

c# - 当进行非常大的插入时,不参数化 MySQL 查询而是使用方法 MySqlHelper.EscapeString(string) 是否安全?

c# - 错误4无效的表达词 'else'

c# - visual studio 无法启动程序访问被拒绝

C# 7 本地函数未按预期工作且未显示任何错误