2012-04-20 8 views
4

私はAPIを作成しています。 PUTメソッドがリソースを更新できるようにしたい。以下は、私は、クライアントがリソース今ASP.NET MVC4でnullと欠落しているパラメータを区別する

のプロパティを更新するために/ TestResource/5に置くことができるようにしたい資源

var resourceToUpdate = new TestResourceModel() 
    { 
     Id = 5 
     Name = "testName", 
     Description = "description", 
     etc... 
    } 

を表す一例のモデルオブジェクトで、クライアントだけを望んでいることを言いますプロパティ名を更新ではなく、説明は、以下の要求を送信:名前は現在、「testNewName」であるので

Name="testNewName" 

この場合は、リソースを更新する必要があり、置く説明がまだある「説明」

どのように私は(私のコントローラメソッドで)このケースを区別しない、クライアントはnullにDescriptionプロパティを設定したい場合から:

[HttpPut] 
public ActionResult Index(TestResourceModel model) 
{ 
    //True in both cases 
    bool descriptionSet = model.Description == null; 

Name="testNewName" 
Description= 

私のコントローラメソッドは次のようになりますよう

+0

あなたはnullプロパティをチェックすることができます –

答えて

1

あなたは更新したい値と入ってくる値を比較しなければなりません。ヌルがヌルであることを意味します:) Alt。モデル(bool isUpdate)に更新フラグを設定し、nullでない値のみを変更します。

+0

私は問題を解決するとは思わない。私のポイントは - この場合、null **は** nullではありません - クライアントとの間に 'Set Description null'とクライアントの区別があります。説明を参照しないリクエスタをポストします – tgallard

+0

Idon't get it ..あなたがビューにモデルを送るとき、それは以下を含んでいます:Id = 5 Name = "testName" Description = "description" uはあなたが望むものを変更し、更新のためにモデルを置きます。あなたはそれを変更していない場合、どのように説明がnullになることができますか? – jrb

+0

これはAPI用です。ビューが関与していません。要求は外部クライアントからコントローラに直接送られます。私は、説明をnullに設定するためにパラメータ "Description ="を送信するときと、そのパラメータを含まないとき(彼らがそれを変更したくないことを示すとき)を区別したい。 – tgallard

関連する問題