要给Asp.net Core MVC的ModelMetadata.AdditionalValues属性添加函数,可以通过继承DefaultModelMetadataProvider类来实现。
以下是一个示例代码:
首先,创建一个自定义的ModelMetadataProvider类,继承自DefaultModelMetadataProvider:
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.AspNetCore.Mvc.ModelBinding.Metadata;
using System;
using System.Collections.Generic;
public class CustomModelMetadataProvider : DefaultModelMetadataProvider
{
public CustomModelMetadataProvider(ICompositeMetadataDetailsProvider detailsProvider)
: base(detailsProvider)
{
}
public override IEnumerable GetMetadataForProperties(Type modelType)
{
var propertiesMetadata = base.GetMetadataForProperties(modelType);
foreach (var propertyMetadata in propertiesMetadata)
{
var additionalValues = new Dictionary();
// 添加自定义的函数到AdditionalValues中
additionalValues["CustomFunction"] = new Func
然后,在Startup.cs文件中的ConfigureServices方法中注册自定义的ModelMetadataProvider:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// 注册自定义的ModelMetadataProvider
services.AddSingleton();
// ...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
app.UseRouting();
// ...
}
}
通过以上的代码示例,您可以给Asp.net Core MVC的ModelMetadata.AdditionalValues属性添加一个名为CustomFunction的函数。