모델 계층 구조에 대해 연구 중이며 몇 가지 질문이 있습니다.ASP.NET MVC View Model Base?
1) 각보기 유형 (추가, 편집 및보기)에 기본 모델이 있습니다. 이것들을 각각의 뷰 타입에 특유의 것을 배치했습니다.
2) 그런 다음 위의베이스가 상속하는 모델베이스가 있습니다. 이를 통해 모든 뷰와 관련된 항목을 포함 할 수 있습니다.
3) 내 ModelBase에는 어떤 뷰에서나 소비 할 수있는 FeedbackViewModel, ShoppingCartViewModel 등의 다른 뷰 모델이 있습니다.
4) ModelBase를 상속 한 MasterPage가 있습니다.
내 모델의 기본 구조지만, 몇 가지 질문이 예
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
그래서 열거 형'ModelType'을 가지고 있고 각 모델에 'ModelType' 속성이 있습니까? 그리고 중첩 된 모델이 좋다는 말을하고 있습니까? 나는 그것들을 좋아해요. 그럼 당신은 강력한 형식의 모델 계층 구조를 가지고 있습니다. – Sam
중첩 된 ViewModels는 관습 기반 템플릿 (예 : custom display/editortemplates -'Html.DisplayFor (model => model.NestedViewModelType)')을 사용하려는 경우 정말 좋습니다. – RPM1984