Registration lifestyle is Singleton by default.
In your case it seems that you should use
registration.Named(registration.ServiceType.Name).LifeStyle.Transient;
On Tue, Oct 21, 2008 at 4:50 AM, Neal Blomfield <[EMAIL PROTECTED]>wrote:
>
> Should view components be registered with an explicit lifestyle?
> If so, what should that lifestyle be and shouldn't it be the
> WindsorViewComponentFactory that dermines the default lifestyle?
> If not, why am I getting state shared across separate calls to
> Render() for the same view component?
>
> Here is the related code and an explanation of the problem to
> hopefully make those three questions a little clearer. I have a view
> component defined as follows:
>
> [ViewComponentDetails("ReviewAnswer")]
> public class ReviewAnswerViewComponent : ViewComponent
> {
> private Question _question;
> private Answer _answer;
>
> [ViewComponentParam(Required=true)]
> public Question Question
> {
> get { return _question; }
> set { _question = value; }
> }
>
> [ViewComponentParam]
> public Answer Answer
> {
> get { return _answer; }
> set { _answer = value; }
> }
>
> public override void Render()
> {
> PropertyBag[ "Question" ] = _question;
> if( _answer != null )
> {
> PropertyBag["Answer"] = _answer;
> }
> string viewName = _question.GetType().Name;
> RenderView( "ReviewAnswer", viewName );
> }
>
> and my site is set up to use windsor integration via the monorail
> facility. ViewComponents are registered using the following:
>
> Kernel.Register(
> AllTypes.Of<ViewComponent>()
> .FromAssembly( webAssembly )
> .Configure(
> delegate( ComponentRegistration registration )
> {
>
> registration.Named( registration.ServiceType.Name );
> } ) );
>
> When using the viewcomponent inside a foreach loop, I am getting the
> same instance each time, meaning that any state from the previous
> execution is also present; i.e. first time _answer is not null and
> therefore copied to the property bag, second time, the answer is null
> and therefore is not copied to the property bag BUT the property bag
> does contain an answer (the one from the previous execution).
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Castle Project Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---