2017-12-31 232 views
0

動作しないバイトをバインドします。アクションが受け入れる場合ASP.Core []は、私がASP.Coreコントローラのアクション(<em>私は読みやす</em>ための改行を追加しました)には、このクエリを送信しています

GET http://localhost:5000/Files/AddFileConfirmed?generatedId=90 
               &generatedId=73 
               &generatedId=25 
               &generatedId=199 
               &generatedId=69 
               &generatedId=245 
               &generatedId=238 
               &generatedId=83 
               &generatedId=164 
               &generatedId=208 
               &generatedId=156 
               &generatedId=83 

int[]の場合、generatedIdは正しく接続されていますが、その場合はbyte[]になります。配列は、整数配列ではなくバイト配列でなければなりません。

[HttpGet] 
public string AddFileConfirmed(int[] generatedId) 
{ 
    return $"ID = {(generatedId == null? "Null" : String.Join(", ", generatedId))}"; 
} 

なぜバイト配列にバインドできませんか?

+0

おそらくバイト配列をハンドリングできるデフォルトのモデルバインダーはありません。最初に確認してください。良いことには、フレームワークは、バインダーを作成してそれを処理するのに十分柔軟であるということです。また、問題を解決するのに役立つ適切なパラメーター属性を使用することも検討する必要があります。 – Nkosi

+0

乾杯@ Nkosi、おそらく音が欠けているバインダー。しかし、 "適切なパラメータ属性"とはどういう意味ですか? – BanksySan

+0

コアでは、以前のバージョンに加えて、モデルをバインドするデータを検索する場所を明示的に指示する必要があります。 [モデルバインドの振る舞いを属性でカスタマイズ](https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding) – Nkosi

答えて

0

バイト配列にバインドできないのはなぜですか?

How model binding worksここで説明するように、次の抜粋はnullを受け取る理由を示しています。

パラメータがバインドされると、モデルバインディングは値が という名前で停止し、次のパラメータをバインドします。

T[]:タイプbyte[]の配列を除いて、Array.Empty<T>()にタイプT[]のセットのパラメータを結合そうでない場合は、 デフォルトモデル結合挙動は、その種類に応じて、 デフォルト値にパラメータを設定します。タイプbyte[]の配列は、nullに設定されています。

関連する問題

 関連する問題