ModelMetadata AdditionalValues.
AdditionalMetadata, :
public class DummyModel
{
[AdditionalMetadata("MvvmBound", true)]
public string PropertyA{ get; set; }
public string PropertyB{ get; set; }
}
string, :
@{
bool isBound = false;
if(ViewData.ModelMetadata.AdditionalValues.ContainsKey("MvvmBound"))
{
isBound = (bool)ViewData.ModelMetadata.AdditionalValues["MvvmBound"];
}
}
DummyModel, , :
@ModelMetadata.FromLambdaExpression(x => x.PropertyA, ViewData).AdditionalValues["MvvmBound"]
, . , AdditionalValues, . :
public static class ModelMetadataExtensions
{
public static bool IsMvvmBound(this ModelMetadata metadata)
{
if (!metadata.AdditionalValues.ContainsKey("MvvmBound")) return false;
return (bool)metadata.AdditionalValues["MvvmBound"];
}
}
. , DummyModel - ( Web.config /Views ):
<h3>WholeModel Is MvvmBound?: @ViewData.ModelMetadata.IsMvvmBound()</h3>
<h3>PropertyA Is MvvmBound?: @ModelMetadata.FromLambdaExpression(x => x.PropertyA, ViewData).IsMvvmBound()</h3>
<h3>PropertyB Is MvvmBound?: @ModelMetadata.FromLambdaExpression(x => x.PropertyB, ViewData).IsMvvmBound()</h3>
, IMetadataAware, , :
public class IsMvvmBoundAttribute : Attribute, IMetadataAware
{
public IsMvvmBoundAttribute()
{
this.IsMvvmBound = true;
}
public bool IsMvvmBound { get; set; }
public void OnMetadataCreated(ModelMetadata metadata)
{
metadata.AdditionalValues.Add("MvvmBound", this.IsMvvmBound);
}
}
public class DummyModel
{
[IsMvvmBoundAttribute]
public string PropertyA{ get; set; }
public string PropertyB{ get; set; }
}
ModelMetadata.AdditionalValues Dictionary<string,object>, . , , , , , AdditionalValues , .
, , ModelMetadata ModelMetadataProvider.
, !