2016-10-02 6 views
0

私はビジネス検索フィルタオブジェクトの作成に使用するビューモデルを持っています。私の見解では、私はアクションリンクを作成します...MVC 5 - デフォルト値の場合はプロパティをシリアル化しない

@Html.ActionLink("Search Link", 
    actionName:="Index", 
    controllerName:="Jobs", 
    routeValues:=New MyFilterViewModel() With {.Field1 = "Some Value", .Field2 = "Some other value"}, htmlAttributes:=Nothing) 

これはうまくいきます。ビューモデルのプロパティをクエリ文字列のパラメータとしてシリアライズし、コントローラアクションによってバインドされます。

フィルタビューモデルには他の多くのプロパティがありますが、大部分は関連性がありませんが、大部分は設定されていませんが、URLパラメータにはすべてシリアル化されています。

モデルビューのプロパティをデコレートする方法はありますか?割り当てられている場合(デフォルト値ではない)にのみシリアル化されますか?

答えて

2

[JsonProperty]属性にDefaultHandling列挙型を使用できます。あなたの特性を飾るlikeso。

[JsonProperty("MyProp", DefaultValueHandling = DefaultValueHandling.Ignore)] 
public string MyProp { get; set; } 
+0

これはJSONシリアライズのためではなく、URLパラメータのシリアル化のために動作します。 – user1751825

+0

おそらく同じアプローチをカスタムモデルバインダーを使用して実装できますか? – Nsevens

+0

@Nsevensはいこれは、カスタムモデルバインダーを使用して行うことができます。 –

関連する問題