7

私は単純なApiControllerを持っています

public HttpResponseMessage Put(int orderid, [FromBody] Order order)
{
    // Do something useful with order.Notes here
}

およびクラス(実際のクラスにはさらにいくつかのプロパティが含まれています)

public class Order
{
    public string Notes { get; set; }
}

次のタイプのPUTリクエストを処理したい

PUT http://localhost/api/orders/{orderid}
Content-Type: application/x-www-form-urlencoded

notes=sometext

すべて正常に動作しますが、空の値はnullとして渡されます

notes=blah            // passes blah
notes=                // Passes null
someothervalue=blah   // Passes null

ApiControllerに空の値と欠落している値を区別させることは可能ですか?

4

2 に答える 2

3

次のように、DisplayFormatAttributeでプロパティに注釈を付けてみましたか?

public class Order
{
    [DisplayFormat(ConvertEmptyStringToNull=false)]
    public string Notes { get; set; }
}
于 2013-01-30T18:06:14.180 に答える
2

これのルートは、の代わりにReplaceEmptyStringWithNull呼び出すことから来ていますstring.IsNullOrWhiteSpacestring.IsNullOrEmpty

WebAPI プロジェクト全体でこれを修正するには、 を に設定するものと交換する必要がありますModelMetadataProviderConvertEmptyStringToNullfalse

DisplayFormatAttribute.ConvertEmptyStringToNull のデフォルトを false に設定するを参照してください。

これは実際には v6 で「修正」されました - https://github.com/aspnet/Mvc/issues/3593を参照してください

于 2016-04-11T20:04:04.040 に答える