2016-10-02 3 views
0

У меня есть viewmodel, который я использую для создания объекта фильтра бизнес-поиска. На мой взгляд, я создаю actionlink вроде так ...MVC 5 - Не сериализуйте свойство, если значение по умолчанию

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

Это прекрасно работает. Он сериализует свойства viewmodel как параметры querystring, которые затем связаны действием контроллера.

Модель просмотра фильтра имеет множество других свойств, хотя большинство из них не имеют отношения к делу, но все они все еще сериализованы в параметрах URL, хотя большинство из них не задано.

Есть ли способ украсить свойства модели, поэтому они будут только сериализованы, если они назначены (не значение по умолчанию)?

ответ

2

Вы можете использовать перечисление DefaultHandling в атрибуте [JsonProperty]. Украсьте свои свойства.
Пример:

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

Это работает для сериализации JSON, но не для URL параметра сериализации. – user1751825

+0

Возможно, такой же подход может быть реализован с помощью настраиваемого модуля модели? – Nsevens

+0

@ Nsevens да это можно сделать с помощью специального связующего. –

Смежные вопросы