2009-09-11 28 views

回答

117

我使用ScriptIgnore属性上我的模型像这样:

public class Item 
{ 
    [ScriptIgnore] 
    public Item ParentItem { get; set; } 
} 

在此特定情形,我从JSON序列得到一个循环引用错误,所以我只是忽略了它。当我打开Model和ViewModel的区别时,我是asking a similar question here on SO

+1

如果它不是POCO而是生成的EntityModel,我不想编辑生成的代码,是否有将ScriptIgnore属性添加到生成的实体模型的解决方法。 – hazimdikenli 2010-11-11 10:09:36

+0

@hazimdikenli你可能不得不利用部分类为此。 – 2011-08-05 16:18:33

+11

不要忘了添加一个对“System.Web.Extensions”的引用来使其工作 – Levitikon 2011-09-14 23:34:51

26
[ScriptIgnore] 

是你的小手指。

+4

+1对于墓碑参考。 – jrummell 2009-09-11 15:40:49

+1

它实际上是“Huckle Bearer”,但我会给你+1和电影。 :) – 2012-08-31 03:22:45

+8

原来的答案是正确的,他说“哈克贝利”,而不是“哈克持票人”。 http://www.imsdb.com/scripts/Tombstone.html – heisenberg 2013-04-22 18:24:11

2

您只需将 [ScriptIgnore(ApplyToOverrides = true)]添加到您的文本模板(.tt)文件中。

这里我的文字模板

#> 
<#=codeStringGenerator.NavigationProperty(navigationProperty)#> 
<# 

一旦我插入产生的codeStringGenerator上面的线我的班级自动的代码,看起来像在此之前的部分:

[ScriptIgnore(ApplyToOverrides = true)] 
public virtual ICollection<Currency> Currencies { get; set; } 

我还需要修改要插入的UsingDirectives函数"using System.Web.Script.Serialization;"

+0

'ApplyToOverrides'似乎对虚拟财产非常重要 – Todd 2016-09-13 04:08:47

1

将属性设置为内部属性。虽然,取决于你的结构。考虑到。