using
System.Collections.Generic;
using
System.Linq;
using
System.Web.Mvc;
namespace
MvcApplication4.Seed
{
public
enum
View
{
HomePage_Index,
HomePage_Edit
}
public
enum
ViewModel
{
Customer
}
public
class
ViewMappingModelMetadata
{
public
View View {
get
;
set
; }
public
ViewModel ViewModel {
get
;
set
; }
public
ModelMetadata Metadata {
get
;
set
; }
}
public
class
ViewMappingModelMetadataCollection : Dictionary<View, List<ViewMappingModelMetadata>>
{
private
static
ViewMappingModelMetadataCollection coll =
new
ViewMappingModelMetadataCollection();
static
ViewMappingModelMetadataCollection()
{
coll.Add(View.HomePage_Index,
new
List<ViewMappingModelMetadata>());
coll[View.HomePage_Index].Add(
new
ViewMappingModelMetadata()
{
View = View.HomePage_Index,
ViewModel = ViewModel.Customer,
Metadata =
new
ModelMetadata(CustomModelMetadataProviderWithConfig.CurrentProvider,
typeof
(Models.Customer),
() => {
return
new
Models.Customer().CustomerId; },
typeof
(
string
),
"CustomerId"
)
{
DisplayFormatString =
@"HomePage\DisplayName:{0}"
}
});
coll.Add(View.HomePage_Edit,
new
List<ViewMappingModelMetadata>());
coll[View.HomePage_Edit].Add(
new
ViewMappingModelMetadata()
{
View = View.HomePage_Edit,
ViewModel = ViewModel.Customer,
Metadata =
new
ModelMetadata(
CustomModelMetadataProviderWithConfig.CurrentProvider,
typeof
(Models.Customer),
() => {
return
new
Models.Customer().CustomerId; },
typeof
(
string
),
"CustomerId"
)
{
DisplayFormatString =
@"Edit\DisplayName:{0}"
}
});
}
public
static
ViewMappingModelMetadataCollection Current
{
get
{
return
coll; }
}
public
ModelMetadata GetMetadataByView(View view, ViewModel model)
{
var
metaList =
from
item
in
coll[view]
where
item.ViewModel == model
select
item.Metadata;
return
metaList !=
null
&& metaList.Count() > 0 ? metaList.LastOrDefault() :
null
;
}
}
}