如何使用ASP.NET MVC核心的DI注册自定义IObjectModelValidator

时间:2017-08-03 09:44:20

标签: validation asp.net-core-mvc

我想自定义asp.net mvc核心的验证。我的主要目标是在action方法中绑定接口。 我通过阅读这篇优秀文章找到了解决方案:Model binding interfaces: fixing server side validation

在实现接口IObjectModelValidator并在startuo类中配置服务后,我想知道验证过程为什么不调用我的新objectModelValidator。

当我通过执行此指令检查我的操作时:requestServices.GetRequiredService<IObjectModelValidator>()我只找到了defaultObjectModelValidator。

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我通过调试Asp.net MVC核心源找到了错误,我在ConfigureServices方法中使用了tryAddSingleton方法而不是AddSingleton方法。 第一种方法在添加服务之前检查是否已存在具有相同类型的服务,并且它不会添加我的第二个服务。 通过AddSingleton更改TryAddSingleton就可以了!

import random
import numpy as np
np.set_printoptions(threshold=np.nan)


for i in range (100):


    binary= np.random.randint (2, size=(10, 4))
    print("binary:" '\n',binary)


    value = np.random.randint (200, size=(10, 1))
    print("value:" '\n',value)




    for i in range (2):
#       the loseer how have the of the binarys who has the smaslets value 
        loser = np.argmin(value)
#        print ("loser:",loser)
#        print("loser:", loser,(value[loser]))
#        print (binary[loser,])
#        print("Loser=", "Index:", loser,"value:",(value[loser]), "binary:",(binary[loser,]))
        print("Index:", loser)
        print("value:",(value[loser]))
        print("binary:",(binary[loser,]))
        print("Loser=", "Index:", loser,"value:",(value[loser]), "binary:",(binary[loser,]))



        binary = np.delete(binary, (loser), axis=0)
        print("binary:" '\n',binary)