Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
SKIER
11 / 10 / 5
Регистрация: 04.07.2009
Сообщений: 356
1

Циклическая ссылка (A circular reference was detected while serializing an object of type 'tblProduct')

13.09.2012, 09:55. Просмотров 1056. Ответов 3
Метки нет (Все метки)

Подскажите в чем проблема,спасибо.
Есть вспомогательный класс

C#
1
2
3
4
5
6
7
8
9
10
[Serializable]
public class ListObjectsFromDB
{
    public ListObjectsFromDB()
    {
    }
    public List<tblManufacturer> ListManufacts { get; set; }
    public List<tblCategory> ListCategorys { get; set; }
    public List<tblType> ListTypes { get; set; }
}

тут отправляю на сервер данные
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public class AJAXRequest : IHttpHandler {
    
    DataClassesDataContext dcContext=new DataClassesDataContext();
    public void ProcessRequest (HttpContext context)
    {
        IQueryable<tblManufacturer> manufacturers = from m in dcContext.tblManufacturers select m;
        IQueryable<tblCategory> categorys = from c in dcContext.tblCategories select c;
        IQueryable<tblType> types = from t in dcContext.tblTypes select t;
        
        ListObjectsFromDB listOfProperty=new ListObjectsFromDB();
 
        List<tblManufacturer> listManuf = new List<tblManufacturer>();
        List<tblCategory> listCategory = new List<tblCategory>();
        List<tblType> listType = new List<tblType>();
        
        
        if (manufacturers!=null)
        {
            foreach (var manufacturer in manufacturers)
            {
                listManuf.Add(manufacturer);
            }
            listOfProperty.ListManufacts = listManuf;
        }
 
        if (categorys != null)
        {
            foreach (var category in categorys)
            {
                listCategory.Add(category);
            }
            listOfProperty.ListCategorys= listCategory;
        }
 
        if (types != null)
        {
            foreach (var type in types)
            {
                listType.Add(type);
            }
            listOfProperty.ListTypes = listType;
        }
        
        JavaScriptSerializer JSSerializer = new JavaScriptSerializer();
        context.Response.CacheControl = "no-cache";
        context.Response.ContentType = "application/json";
        context.Response.Write(JSSerializer.Serialize(listOfProperty));
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }
при загрузке страницы вылетает такая ошибка
0
Миниатюры
Циклическая ссылка (A circular reference was detected while serializing an object of type 'tblProduct')  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2012, 09:55
Ответы с готовыми решениями:

Передача строки из GridView: Object reference not set to an instance of an object
Ахтунг!) Не разберусь где я не установил ссылку оО Выскакует когда я хочу...

NullreferenceExeption was unhandled Object reference not set to an instance of an object
using System; using System.Collections.Generic; using System.ComponentModel;...

Ошибка Object reference not set to an instance of an object
здравствуйте всем, у меня одна проблемка, работаю с генерацией различных...

Object reference not set to an instance of an object
Люди подскажите как создать на форме несколько панелей с помощью массива. Если...

Object reference not set to an instance of an object
Имеется 2 класса: public class infa { ...

3
SKIER
11 / 10 / 5
Регистрация: 04.07.2009
Сообщений: 356
13.09.2012, 11:08  [ТС] 2
Есть так же страница ashx c помощью которой я отправляю данные на сервер ,ошибка происходит когда я добавляю в базу новые данные,и перезагружаю страницу.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class AJAXPostData : IHttpHandler {
 
    public void ProcessRequest(HttpContext context)
    {
        JavaScriptSerializer JSSerializer = new JavaScriptSerializer();
        
        DataClassesDataContext dc=new DataClassesDataContext();
        tblProduct product=new tblProduct();
        
        context.Response.CacheControl = "no-cache";
        context.Response.ContentType = "application/json";
        
        var nameProd = context.Request["name"];
        var pictureProd = context.Request["picture"];
        var manufactProd = context.Request["manufacturer"];
        var categoryProd = context.Request["category"];
        var typeProd = context.Request["type"];
        var priceProd = context.Request["price"];
        var countProd = context.Request["count"];
 
        product.name = nameProd;
        product.pictureURL = pictureProd;
        product.manufacturerID = int.Parse(manufactProd);
        product.categoryID = int.Parse(categoryProd);
        product.typeID = int.Parse(typeProd);
        product.price = int.Parse(priceProd);
        product.count = int.Parse(countProd);
        product.date = DateTime.Now;
        product.latest = "false";
 
        dc.tblProducts.InsertOnSubmit(product);
        dc.SubmitChanges();
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }
Добавлено через 35 минут
вот так принимаю и отдаю данные на клиенте

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<script type="text/javascript">
        
        //START AJAX  get data from server
        $(document).ready(function () {
            ExecuteAJAXCall();
        });
 
        function ExecuteAJAXCall() {
            $.ajax({
                type: "GET",
                url: "AJAXRequest.ashx",
                dataType: 'json',
                success: Callback_AJAXCall
            });
        };
 
        function Callback_AJAXCall(data) {
            parser(data);
        };
 
        function parser(listPropertys) {
            var listManuf = listPropertys.ListManufacts;
            var listCategory = listPropertys.ListCategorys;
            var listType = listPropertys.ListTypes;
 
            for (var i = 0; i < listManuf.length; i++) {
                $('#ListOfManufactField').append($("<option/>", {
                    value: listManuf[i].id,
                    text: listManuf[i].name
                }));
            }
            for (var j = 0; j < listCategory.length; j++) {
                $('#ListOfCategoryField').append($("<option/>", {
                    value: listCategory[i].id,
                    text: listCategory[j].name
                }));
            }
            for (var z = 0; z < listType.length; z++) {
                $('#ListOfTypeField').append($("<option/>", {
                    value: listType[z].id,
                    text: listType[z].name
                }));
            }
        };
 
        //END AJAX
 
 
        //START AJAX post data to server
        var nameProduct = "";
        var pictureProdct = "";
        var manufacturerProduct = "";
        var categoryProduct = "";
        var typeProduct = "";
        var priceProduct = "";
        var countProduct = "";
        function ExecuteAJAXCallPostData() {
            nameProduct = document.getElementById("NameProductField").value;
            pictureProdct = document.getElementById("PictureProductField").value;
            manufacturerProduct = document.getElementById("ListOfManufactField").options[document.getElementById("ListOfManufactField").selectedIndex].value;
            categoryProduct = document.getElementById("ListOfCategoryField").options[document.getElementById("ListOfCategoryField").selectedIndex].value;
            typeProduct = document.getElementById("ListOfTypeField").options[document.getElementById("ListOfTypeField").selectedIndex].value;
            priceProduct = document.getElementById("PriceProductField").value;
            countProduct = document.getElementById("CountProductField").value;
 
            $.ajax({
                type: "POST",
                data: { name: nameProduct, picture: pictureProdct, manufacturer: manufacturerProduct, category: categoryProduct, type: typeProduct, price: priceProduct, count: countProduct },
                url: "AJAXPostData.ashx",
                dataType: 'json'
            });
        };
 
 
        $("#AddProductBtn").click(function () {
            ExecuteAJAXCallPostData();
        });
 
        //END AJAX
        $("#AddProdLink").click(function () {
            $("#SubAddBlock").show('slow', function () {
            });
        });
    </script>
Добавлено через 18 минут
так получаю данные и записываю в базу
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public class AJAXPostData : IHttpHandler
{
    DataClassesDataContext dc = new DataClassesDataContext();
    public void ProcessRequest(HttpContext context)
    {
        //JavaScriptSerializer JSSerializer = new JavaScriptSerializer();
        
        tblProduct product=new tblProduct();
        
        context.Response.CacheControl = "no-cache";
        context.Response.ContentType = "application/json";
        
        var nameProd = context.Request["name"];
        var pictureProd = context.Request["picture"];
        var manufactProd = context.Request["manufacturer"];
        var categoryProd = context.Request["category"];
        var typeProd = context.Request["type"];
        var priceProd = context.Request["price"];
        var countProd = context.Request["count"];
 
        product.name = nameProd;
        product.pictureURL = pictureProd;
        product.manufacturerID = int.Parse(manufactProd);
        product.categoryID = int.Parse(categoryProd);
        product.typeID = int.Parse(typeProd);
        product.price = int.Parse(priceProd);
        product.count = int.Parse(countProd);
        product.date = DateTime.Now;
        product.latest = "false";
        product.description = "бла бла бла";
 
        dc.tblProducts.InsertOnSubmit(product);
        dc.SubmitChanges();
    }
 
    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
0
SKIER
11 / 10 / 5
Регистрация: 04.07.2009
Сообщений: 356
13.09.2012, 11:44  [ТС] 3
Вот почему то выделяет красным ети обьекты
0
Миниатюры
Циклическая ссылка (A circular reference was detected while serializing an object of type 'tblProduct')  
Alligieri
CEO
Эксперт С++
2254 / 1244 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
17.09.2012, 02:10 4
Цитата Сообщение от SKIER Посмотреть сообщение
Вот почему то выделяет красным ети обьекты
В окнах Locals и Watches красным выделяет значения которые изменились
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2012, 02:10

Ошибка Circular unit reference to
Вот сделал тест, в нем 7 форм. Вначале все работало нормально, а сейчас выдает...

Нулевые значения баз данных. Object reference not set to an instance of an object
В базе данных существуют пустые поля. Из базы осуществляется вывод на веб...

NullReferenceException: Object reference not set to an instance of an object в FindObjectType как исправить?
Ошибка NullReferenceException: Object reference not set to an instance of an...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru