我试图重构视图和模型。此前,强类型的视图曾在CSHTML文件这种模式指令:使用类型为T或接口的Model类为强类型视图
@model MyViewModel<MySubViewModel>
因为我已经确定了类型MySubViewModel必须要么一般或可继承的,因为我已经确定了多种类型,应该是可以互换位置。
首先我尝试这样做:
@model MyViewModel<T>
...这我不能让工作,所以,一厢情愿地想,我尝试这样做:
@model MyViewModel<T> where T : IMySubViewModel
...这是没有任何好,所以我终于试了这个:
@model MyViewModel<IMySubViewModel>
...起初我以为这是工作,因为Visual Studio没有强调它。但是,我很快发现每个我都有剃须刀插入的地方,它显示的信息是错误的,即“当前上下文中不存在任何名称”的消息。这适用于ViewBag,Html帮助器和我的视图模型的所有用法。
那该怎么做呢?或者不能这样做?我知道我大概可以使用:
@model MyViewModel<dynamic>
...但我宁愿不输智能感知因为我知道了“动态式”一直在不断地实现IMySubViewModel。
什么是MyViewModel和IMySubViewModel的命名空间? – Jakotheshadows
我恳求'@model MyViewModel'不起作用。我假设'MyViewModel'被定义为泛型类型,并且没有限制将阻止接口IMySubViewModel被用作泛型类型参数的类型? –
Igor
@Jakotheshadows - 它们在特定于解决方案的名称空间中,但似乎不存在无法识别类型的问题。 – bubbleking