假设我正在实施“食品”观点. (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属性并将其用于有条件地渲染适当的输出.