aspnetcore/test/WebSites/ModelBindingWebSite/AdditionalValuesMetadataPro...

33 lines
1.3 KiB
C#

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Microsoft.AspNet.Mvc.ModelBinding.Metadata;
using ModelBindingWebSite.Models;
namespace ModelBindingWebSite
{
public class AdditionalValuesMetadataProvider : IDisplayMetadataProvider
{
public static readonly string GroupNameKey = "__GroupName";
private static Guid _guid = new Guid("7d6d0de2-8d59-49ac-99cc-881423b75a76");
public void GetDisplayMetadata(DisplayMetadataProviderContext context)
{
if (context.Key.ModelType == typeof(LargeModelWithValidation))
{
context.DisplayMetadata.AdditionalValues.Add("key1", _guid);
context.DisplayMetadata.AdditionalValues.Add("key2", "value2");
}
var displayAttribute = context.Attributes.OfType<DisplayAttribute>().FirstOrDefault();
var groupName = displayAttribute?.GroupName;
if (!string.IsNullOrEmpty(groupName))
{
context.DisplayMetadata.AdditionalValues[GroupNameKey] = groupName;
}
}
}
}