2011-03-18 77 views
0

我想反序列化一个nhibernate对象。出于某种原因,我收到了循环引用错误。问题是,我无法从哪个属性导致错误。我用[ScriptIgnoreAttribute]标记了所有连接的类,但仍然没有。发现什么属性导致循环引用错误

回答

1

我建议你避免将模型对象传递给视图。您应该定义一个视图模型,该视图模型专门针对视图的需求而定制,并且只包含必要的属性。然后在控制器中,您可以在模型和视图模型之间进行映射。例如:

public ActionResult Foo() 
{ 
    SomeModel model = _repository.GetModel(); 
    SomeViewModel viewModel = Mapper.Map<SomeModel, SomeViewModel>(model); 
    return Json(viewModel); 
} 

这样,你再也不用因为你有你的视图模型的总量控制担心循环引用,你也将是只什么是视图需要暴露。

+0

什么是Mapper.Map?在C#中? – vondip 2011-03-18 09:22:36

+0

@vondip,它是[AutoMapper](http://automapper.codeplex.com)。 – 2011-03-18 09:25:02

+0

我明白了。我一直在考虑整合一个类似的工具。尽管这是一种战略解决方案。增加这种效用所涉及的成本是多少? – vondip 2011-03-18 09:27:49