【发布时间】:2012-06-27 22:34:04
【问题描述】:
我们有一个包含Widget<dynamic> 集合的 ViewModel:
public class Widget<T>
{
public string ViewName { get; set; }
public T Data { get; set; }
}
在我们的视图中,我们遍历小部件集合并调用Html.Partial。
@foreach (var widget in Model) {
@Html.Partial(widget.ViewName, widget)
}
如果该部分具有动态模型或Widget<dynamic> 模型,则此方法提供。
但是,我希望在局部视图中使用智能感知,因此我为我的视图提供了适当的小部件数据类型的模型,例如:
@model Widget<string>
不幸的是,这会引发异常,因为 @Html.Partial 将动态模型转换为 System.Object。
除了在局部中再次手动转换小部件之外,有没有办法在不将动态模型转换为对象的情况下调用Html.Partial?
【问题讨论】:
-
如果您知道
T是string,为什么还要使用dynamic? -
我们不知道
T是string。主 ViewModel 包含一组小部件,可以是Widget<string>、Widget<SomeModel>等。只有 Partial“知道”应该传递给它什么。 -
如果你使用 T 则不需要动态。你的视图模型应该有一个 Widget
的集合,而不是 Widget -
@Mark,我应该更明确一点 - 视图模型将包含 不同 类型的小部件。
-
@Ben 我想我现在看到了问题
标签: asp.net-mvc asp.net-mvc-3 dynamic