[英]Call custom ModelBinder in .NET Core
我正在.NET Core 1.1.0中創建一個自定義ModelBinder,我想我基本上已經知道了。 我只想在需要時才使用此資料夾,但是我不知道該如何完成。 我不希望調用此模型綁定程序時將其忽略,但是當我調用它時,我希望所有其他綁定程序都被忽略。 我該怎么做?
似乎可行的兩件事是參數屬性[Bind]
和[ModelBinder]
,但它們都[ModelBinder]
。
我首先嘗試了以下方法:
[HttpGet]
public async Task<IActionResult> Get([Bind("test")] int userId)
{
// stuff
}
當點擊我的自定義IModelBinderProvider
, ModelBinderProviderContext
包含BindingInfo
屬性,該屬性又包含IPropertyFilterProvider
。 調試時,該篩選器提供程序包含一個名為Include
的集合,其中Include
我的test
值。 但是,似乎沒有任何方法可以通過編程方式檢查該集合,但是我找不到實際訪問該集合的方法。 如果未設置任何內容,則為null,因此我可以假設檢查是否為null,但這很混亂,也不是一個好主意。
為了說明這一點,這是ModelBinderProviderContext
的調試器信息:
接下來,我嘗試使用此代碼:
[HttpGet]
public async Task<IActionResult> Get(
[ModelBinder(BinderType = typeof(MyModelBinder))] int userId
)
{
// stuff
}
此屬性似乎沒有任何作用。 它不會強制使用MyModelBinder
; 模型聯編程序按照Startup.cs
( MvcOptions
的列表)中指定的順序使用。
PropertyFilterProvider
包含一個實現IPropertyFilterProvider
接口的BindAttribute
實例。 您可以將實例轉換為BindAttribute
並訪問Include
屬性:
var bindAttribute = context.BindingInfo.PropertyFilterProvider as BindAttribute;
var include = bindAttribute?.Include;
請記住, bindingAttribute
可能不會成功,導致bindingAttribute
為null
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.