可以将不同的视图模型发送到视图吗?

假设我正在实施“食品”观点. (ASP.NET MVC2)

然后,根据类型(例如水果或蔬菜),我将更改视图.

我可以在不为水果和蔬菜创建单独视图的情况下执行此操作吗?

即假设我们具有类似http://localhost:xxxx/Food/ {foodID}的网址结构

不想

http://localhost:xxxx/Veg/ {foodID}

http://localhost:xxxx/Fruit/ {foodID}

因此,我希望能够根据类型来更改视图.我使用的是telerik的Tabstrip控件,以让您了解视图的差异-可以说-不显示Veg的特定标签,例如显示水果.

一个视图可以接受两个不同的视图模型吗?因此,当我们点击http://localhost:xxxx/Food/ {foodID}时,代码确定对象是什么类型(水果或蔬菜),然后发送FruitViewModel或VegetableViewModel?如果仅发送一个viewmodel,如何控制逻辑以在视图中显示或不显示某些内容?

解决方法:

如果将FoodViewModel定义为基类,并让FruitViewModel和VegetableViewModel对其进行扩展,则可以使ViewPage< FoodViewModel>并通过任何一个.然后,您的视图可以检查它获得了哪个特定的子类并呈现适当的输出.

或者,如果FruitViewModel和VegetableViewModel之间的唯一区别是一个是Fruit,一个是Vegetable(但所有其他属性都是共享的,即名称,卡路里,颜色,成本),则在共享的FoodViewModel上具有FoodType属性并将其用于有条件地渲染适当的输出.

上一篇:Kendo.hap.js常用方法介绍


下一篇:什么是MVC