用于泛型类型的ASP.NET MVC显示模板

我试图使用模型ListModel作为通用列表模型。我想进入页面
@Html.DisplayForModel()
但是MVC没有正确找到模板文件“ListModel.cshtml”。它必须对通用模型有不同的作用。我应该为模板化文件命名,以便正确定位?
public class ListModel<T>
{
public IEnumerable<T> Models { get; set; }
public string NextPage { get; set; }
}
我希望它能找到
Shared/DisplayTemplates/ListModel.ascx
,但事实并非如此。有人知道吗? 编辑: 我最后通过简单地删除泛型参数来解决这个问题。我想知道你是否仍然可以拥有通用文件名。
public class ListModel
{
    public IEnumerable Models {get;set;}
    public string NextPage {get;set;}
}
    
已邀请:
作为一种解决方法,你能用
UIHint
属性装饰
ListModel<T>
类来强制它使用你想要的模板吗? 例如,
[UIHint("ListModel")]
public class ListModel<T>
{
...
    
我不认为这是可能的。 想想看:如果你能够以某种方式将模板声明为通用(例如通过调用它,可以通过调用ListModel`1.ascx或其他东西),MVC运行时将如何处理模型的任何特定实例?您将如何在模板中显示通用属性/字段? 我无法找到一个MS特别声明不允许使用通用模型的地方,但我看不出它们是如何使它工作的。 观察也支持这一点,如果您尝试创建强类型视图,则会从下拉框中过滤掉泛型类。     
您可以明确指定您的模板,然后MVC会像往常一样找到它。
@Html.DisplayForModel("ListModel")
和类似的
@Html.DisplayFor(m=>m.AProperty,"TemplateName")
    

要回复问题请先登录注册