我正在研究模型层次结构并提出几个问题。ASP.NET MVC查看模型库?
1)我有每种视图类型(添加,编辑和视图)的基本模型。我把这些东西放在特定于每种视图类型的东西中。
2)然后我有一个模型基地,上面的基地继承。这允许我包含与ALL视图有关的事物。
3)在我的ModelBase中,我有一些其他视图模型,如FeedbackViewModel,ShoppingCartViewModel等,我可以在任何视图上使用它们。
4)我有我的MasterPage继承ModelBase。
例
Public MustInherit Class ModelBase
Public Property ErrorMessage As String
Public Property InformationMessage As String
Public Property WarningMessage As String
Public Property FeedbackModel As New FeedbackViewModel
End Class
Public MustInherit Class ViewModelBase
Inherits ModelBase
'View Model Specific Stuff
End Class
'Allows contact us form to be submitted.
Public Class ContactUsViewModel
Inherits ViewModelBase
Public Property Name As String
Public Property EmailAddress As String
Public Property Phone As String
Public Property Comments As String
End Class
这是我的模型的基本结构,但有几个问题:
1)我该怎么做,不需要模型的视图,但我需要传递FeedabckViewModel,SHoppingCartViewModel等?我正在考虑GenricViewModel?
2)您是否发现此设计中存在任何缺陷?
谢谢!
为什么使用'ErrorMessage','InformationMessage'等?我这样做是为了隐藏我想在视图(页面)上显示的消息,该消息未绑定到某个属性,比如'Invalid Login.'。在控制器中,我使用ModelState.AddModelError(“Message”,“Invalid Login”),然后为视图中的Message属性设置ValidationMessage。 – Sam 2011-04-11 00:12:46
因此,有一个枚举'ModelType',然后在每个模型中有一个属性'ModelType'?你是说嵌套模型好吗?我喜欢他们,那么你有一个强类型的模型层次结构。 – Sam 2011-04-11 00:14:16
如果您想要使用基于约定的模板,例如自定义显示/编辑模板--Html.DisplayFor(model => model.NestedViewModelType),则嵌套ViewModel非常好。 – RPM1984 2011-04-11 00:16:46