私のASP.NET MVC Webサービスでは、JSONオブジェクトとして返すモデルがあります。今私のモデルには、私が帰りたくないいくつかのプロパティがあります。Web APIフィルタリングモデルのプロパティ
モデル例:
class Account {
public int ID { get; }
public string Username { get; }
public string Password { get; }
//... more properties
}
はのは私だけJSONとしてID
とUsername
プロパティを返すようにしたいとしましょう。私は、これらのプロパティだけをフィルタリングするための良い方法を探しています。アクセス修飾子を変更することは私の選択肢ではありません。
私が考えることができる解決策は、以下のようなホワイトリストを作成することです。ここで私はDisplayName
を追加しました。これはカスタマイズするのに良いことですが、必須ではありません。
class FilterProperty
{
public string PropertyName { get; }
public string DisplayName { get; }
public FilterProperty(string propertyName, string displayName)
{
PropertyName = propertyName;
DisplayName = displayName;
}
}
class Account
{
public static FilterProperty[] Whitelist = {
new FilterProperty("ID", "accountId"),
new FilterProperty("Username", "accountName")
};
//...
}
このソリューションの欠点は、プロパティの名前を変更する場合は、ホワイトリストも変更する必要があることです。
私はこの仕事をすることができますか、よりよい解決策がありますか?
投稿の下と上の周りに書かれたこの記事でチェックアウト含めたいプロパティのみにデータメンバーを追加します。http://odetocode.com/blogs/をscott/archive/2012/03/11/asp-net-mvc.aspxでの完全ガイド/質量割り当て。とりわけインタフェースを使用してモデルを制限するなど、強く型付けされたアプローチをチェックしてください。 –
AccountDtoを作成し、必要な値をマップして、Accountの代わりにAccountDtoを返すことはできますか? – hellwd
@hellwd私はこれを試しましたが、これは私が持っているモデルの量が2倍になります。それは非常に効率的ではないと思われます。 –