只是想知道人们对跨多个视图共享一个视图模型实例的想法是什么?
这是一种反模式还是被接受的做法,利弊是什么?
仅根据我的经验
如果视图在显示的内容上存在分歧,主要的缺点可能是未来的重构工作。当您决定分享观点时,您需要考虑这种可能性有多大。
还要注意视图模型的命名。例如,如果您有 Book/Edit.aspx 和 Book/Add.aspx 视图,您不希望在 Book/Edit.aspx 中使用 AddBookViewModel.cs。例如,这可能会在您的测试中创建一些看起来令人困惑的代码。
在上面的示例中,我通常会使用 CreateEditBookViewModel.cs
如果您查看 SharpArchitecture (www.sharparchitecture.net/) 之类的东西,我相信他们在他们的脚手架中使用了这种方法,并且他们还使用共享视图模型通过部分共享视图元素。
就它是一种反模式而言,我会说不。只是健康的代码重用。