在我的ASP.NET MVC4应用程序中,我的模型定义如下:
public class Employee : BaseObject
{
[JsonIgnore]
public string FirstName { get; set; }
[JsonIgnore]
public string LastName { get; set; }
[JsonIgnore]
public string Manager { get; set; }
public string Login { get; set; }
...
}
当我使用ApiController返回此对象时,我得到正确的对象没有具有JsonIgnore
属性的字段,但是当我尝试使用下面的代码在cshtml文件中添加相同的对象时,我得到所有字段。
<script type="text/javascript">
window.parameters = @Html.Raw(@Json.Encode(Model));
</script>
看起来@Json.Encode忽略了这些属性 如何解决这个问题?
答案 0 :(得分:16)
您使用的System.Web.Helpers.Json
类依赖于.NET的JavaScriptSerializer
类。
您在模型上使用的JsonIgnore
属性特定于默认情况下用于ASP.NET Web API的Newtonsoft Json.NET库。这就是为什么它不起作用。
您可以在Razor视图中使用相同的JSON序列化程序,以便与Web API更加一致:
<script type="text/javascript">
window.parameters = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model));
</script>
答案 1 :(得分:7)
您也可以在模型上使用[ScriptIgnore]
,即:
public class Employee : BaseObject
{
[ScriptIgnore]
public string FirstName { get; set; }
[ScriptIgnore]
public string LastName { get; set; }
[ScriptIgnore]
public string Manager { get; set; }
public string Login { get; set; }
...
}
按照原样呈现:
<script type="text/javascript">
window.parameters = @Html.Raw(@Json.Encode(Model));
</script>