0

ASP.NETWebAPIは初めてです。

RESTfulWebアプリケーションでPOCOを取得および返す方法の例を見ました。

実際のアプリケーションでは、POCOの一部のプロパティのみを渡すことができるのでしょうか(セキュリティやメッセージサイズの理由から)。

'[ScriptIgnore]'属性を使用できることがわかりましたが、たとえば、要求しているコントローラーに応じて渡すプロパティをカスタマイズする方法を探しています。

そうするための、すぐに使える素晴らしい方法はありますか?

ありがとう

4

2 に答える 2

2

おそらく最も簡単なのは、POCOとSystem.Runtime.Serialization.DataContractAttributeあなたが含めたいメンバーをSystem.Runtime.Serialization.DataMemberAttributeieで飾ることです

[DataContract]
public class MyType
{
  [DataMember]
  public string Property1 {get; set;}
  public string Property2 {get; set;}
  public string Property3 {get; set;}
}

Property1この場合、シリアル化されるのはこの場合のみです。注目に値するのは、両方XmlMediaTypeFormatterJsonMediaTypeFormatterが尊重DataContractされるため、XML/JSON固有の属性は必要ないということです。

これで、これはより単純なソリューションで機能します。実際の、丸みのあるアプローチでは、モデルをクライアントに公開するのではなく、おそらくDTOに頼る必要があります。

Automapperそのために使用して、モデルをDTOにプロジェクトすることができます-ここに優れた紹介記事がありますhttp://www.mono-software.com/blog/post/Mono/120/Using-AutoMapper-to-handle-DTOs/。また、Automapperを使用すると、同じベースモデルからさまざまなタイプのDTOを作成できます。これは、私が理解していることですが、興味のあることです。

于 2012-09-27T12:05:02.257 に答える
0

同じモデルの複数の症状を異なるコントローラーから返そうとしている場合、それは有害な設計です(私によると)。それでも実行したい場合は、不要なプロパティを「null」にしてモデルを返すことができます。

シリアル化から無視するnullオブジェクトを処理するには、フォーマッターの構成中にどこかでこれを行う必要があります(global.asax内)。

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
于 2012-09-27T12:01:41.257 に答える