MVC 5 - 如果默认值,请不要序列化属性

时间:2016-10-02 14:43:12

标签: asp.net-mvc vb.net

我有一个viewmodel,我用它来创建业务搜索过滤器对象。在我看来,我创建了一个像这样的动作链接......

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

这很好用。它将viewmodel属性序列化为查询字符串参数,然后由控制器操作绑定。

过滤器视图模型虽然有很多其他属性,但大多数属性都不相关,但它们仍然在URL参数中序列化,即使大多数未设置。

有没有办法装饰modelview属性,所以只有在分配它们时才会序列化它们(不是默认值)?

1 个答案:

答案 0 :(得分:2)

您可以在DefaultHandling属性中使用[JsonProperty]枚举。装饰你的房产喜欢。
示例

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