问题标签 [scriptignore]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
562 浏览

c# - 跳过 [ScriptIgnore] 一次

这种情况的环境:

  • asp.net mvc 3
  • C#
  • 实体框架 4.3.1
  • JavaScriptSerializer

    我遇到过一种情况,最好包含一个标记为[ScriptIgnore]. 如果没有该属性,该字段将构成循环引用并导致引发异常。原因与此类似:

    所以你可以在这里看到,一个Foo可以有很多关联的Bars. 并且 aBar有一个关联的Foo.

    回到情况。我正在使用包含语句在控制器中加载此关联:

    没有抛出错误,因为 include 不受[ScriptIgnore]注释的影响。调试时,检查时正确构建关联。有一个 的列表foos,每个foo都有一个 的关联列表Bars

    现在我想序列化这个构造的列表。我有一个充满数据的视图模型,它看起来像这样:

    所以我将此视图模型传递给视图并序列化它:

    不会引发异常,但是,序列化会正确跳过Bars标有 的字段 ( ) [ScriptIgnore]。经过consol.log(fooViewModel)检查,很明显有一个 的数组Foo,但是,Bar在任何Foos.

    有没有一种方法可以让我一次跳过这个[ScriptIgnore]标签?我意识到,如果它每次都跳过,那么序列化程序会序列化 Foo,查看并查看 Bar 类型的集合,序列化每个 Bar,注意 Bar 有一个关联的 Foo,序列化 Foo,注意 Foo 有一个 Bar 类型的集合。 。ETC。我只想抢Bar第一次的收藏。有没有办法做到这一点?我意识到它将尝试Foo从 Bar 序列化,但它将是空的。这一切都是通过预先加载完成的,并且整个对象图都已经构建好了。

  • 0 投票
    1 回答
    1864 浏览

    c# - 如何让 JavaScriptSerializer 忽略 [ScriptIgnore] 标签?

    我需要让JavaScriptSerializer忽略[ScriptIgnore]标签。我想我可以使用自定义JavaScriptConverter来做到这一点。但是,我不太确定。我需要做的就是忽略该属性,其余的可以通过基本定义来完成。您可以在此处查看代码JavaScriptSerializer

    我担心实现自定义转换器(例如此示例)最终会无法正确序列化复杂的自定义对象图。

    回顾微软的 JavaScriptSerializer 代码,上线252-253代码:

    是我真正需要绕过的唯一部分。我只需要注释掉那行代码。不幸的是,这实际上是不可能的,所以我需要一些方法来忽略整个过程的那一部分。

    我怎样才能忽略那行代码,或者以某种方式提供一个不忽略[ScriptIgnore]属性的自定义实现?

    0 投票
    1 回答
    573 浏览

    c# - ScriptIgnore 不适用于 WCF REST 服务应用程序

    我启动了一个 Visual Studio WCF Rest 服务应用程序项目,我希望有一个服务返回带有序列化对象的 Json 格式消息,并且我希望对象的某些字段不被序列化。我必须说,我对 WCF 的了解非常基础,并且我使用了 Visual Studio 中的 Rest Service Application 项目,因为它是一种快速实现我需要的简单方法。

    假设这是我拥有的对象:

    这是我的代码

    我到处读到我需要做的是将 [ScriptIgnore] 属性分配给我不想序列化的属性。但如果我这样做,它就不起作用。无论如何,我都会将它们序列化。

    我实现我想要做的唯一方法是以这种方式声明我想要返回的对象:

    通过这种方式,我可以根据需要对类进行序列化。但这让我很烦恼,因为我可能没有正确地做这件事。我这样做对吗?

    0 投票
    1 回答
    1391 浏览

    c# - Asp.net ScriptIgnore 属性不起作用

    这是我的 POCO 课程:

    我想将 A 的对象序列化为 Json。但是当我尝试序列化 POCO 代理对象时,我不断收到循环引用异常(尽管它适用于 POCO 对象)。我通过谷歌搜索,发现 ScriptIgnore 属性应该在 .Net 4.5 中工作。但我正在使用.Net 4.5,显然它不起作用。谁能告诉我如何解决这个问题?

    0 投票
    1 回答
    1392 浏览

    c# - 在结果 json 中隐藏类属性

    我有一个检索 mongodb 对象的类,这个类是我的应用程序的 json 输出。问题是我想隐藏我无法完成的“_id”字段。我尝试这样做(我在这里接受的答案中找到了):

    但是“_id”属性仍然显示在我的结果中。我要提几件事:-我使用.net MVC4 API项目-我使用的mongodb项目是完整结果中的一个孩子:

    {“响应”:{“数据”:{“_id”:“51c38b14dc2ab62eb0265395”,.....},...“版本”:1.0}

    0 投票
    2 回答
    906 浏览

    asp.net-mvc - ScriptIgnore 属性不适用于部分类

    我在部分视图上使用 ScriptIgnore 标记来阻止属性序列化时遇到问题。

    var docs = @Html.Raw(Json.Encode(Model))

    有趣的是,当我将属性直接添加到 .tt 文件中的部分类时,它按预期工作,但是因为当我执行代码生成时该文件将被覆盖,所以我尝试使用 MetadataType

    我仍然遇到同样的错误:在序列化“DocumentCategory”类型的对象时检测到循环引用。

    因为 DocumentCategory 包含分层数据。

    任何帮助将不胜感激!

    部落84

    0 投票
    1 回答
    1782 浏览

    c# - 忽略继承类中的 [ScriptIgnore] 属性

    我有一个基类,其中一个属性具有 ScriptIgnore 属性:

    我还有另一个继承自基类的类:

    我尝试覆盖 Name 属性,但它仍然没有被序列化。有没有办法覆盖 ScriptIgnore 属性(在继承类中忽略它)?

    0 投票
    1 回答
    71 浏览

    c# - ScriptIgnore 导致其他属性,例如 StringLength 被忽略

    我有一些从基类继承的类。

    上面的代码创建了一个 maxLength 为16的迁移。

    到目前为止一切正常。

    但是,当我[ScriptIgnore]为 Test 属性添加属性时,

    然后它在迁移下面创建, maxLength 为8000

    在我看来,这[ScriptIgnore]压倒了所有其他属性,这很奇怪。

    当我创建一个空的 MVC 项目时,我无法复制该问题。我相信我的项目有问题。会是什么?