2017-03-21 1 views
3

クエリ用のパラメータからモデルのバインディングを検索用に使用しようとしています。ASP.NETコアのモデルにクエリパラメータをバインドします

マイ検索対象は

[DataContract] 
public class Criteria 
{ 
    [DataMember(Name = "first_name")] 
    public string FirstName { get; set; } 
} 

私のコントローラは、コントローラのアクションの基準プロパティがnullである.../users/search?first_name=dave次のように私は、エンドポイントを呼び出して、次のアクション

[Route("users")] 
public class UserController : Controller 
{ 
    [HttpGet("search")] 
    public IActionResult Search([FromQuery] Criteria criteria) 
    { 
    ... 
    } 
} 

たです。 ただし、エンドポイントをスネークケース.../users/search?firstName=daveとして呼び出すことはできません。criteriaプロパティにはプロパティ値が含まれています。この場合、Model Bindingは機能しましたが、snake_caseを使用したときは動作しません。

Model Bindingでsnake_caseを使用するにはどうすればよいですか?

+0

個別モデルのプロパティに[FromQuery]属性を追加する必要があります質問/ 38305295/model-binding-in-asp-net-core-to-map-underscores-to-title-case-property-names) – Win

答えて

10

あなたはhttp://stackoverflow.com/(の可能性のある重複した[地図にASP.NETコアに結合モデルがタイトルケースのプロパティ名にアンダースコア]

public class Criteria 
{ 
    [FromQuery(Name = "first_name")] 
    public string FirstName { get; set; } 
} 
+0

GETのカスタム名を持つメンバーとデータコントラクトを使いたいPOSTエンドポイントなので、最初のケースではPOSTリクエストに対してFromQueryとFromBodyになりますか? –

+0

私はこれを動作させることはできませんが、回答としてマークされています。 – sander

+0

私は、他の人が遭遇する可能性のある問題があると付け加えたいと思います。パラメータ「モデル」の名前を付けました。私のオブジェクトには「モデル」という名前のプロパティがありました。パラメータの名前を変更するまでデータバインディングは機能しません。 – sander

関連する問題