In a lot of things that MVC brought (besides reminding me how much I hate classic asp) what I loved the most was the routing engine. The routing feature was beautiful because it provided for loose-coupling, whilst being structured and rich enough to be actionable. Given that, and for structural and development modularity purposes I adopted the .NET 3.5sp1 routing engine for an URL based-navigation framework for Silverlight.

Basically it works pretty much like MVC/asp.net routing, you set up the routes to yields UI Objects. In this case we pass in a relative url (like "Customer/EditOrder/39/") along with an optional name-value collection (a dictionary basically) as request parameters. You can think of the request parameters as QueryString's collection or Form's input-value collection. What you get out from the routing engine is a "NavigationResponse" type, that contains a UI Page (basically a FrameworkElement) and another name-value collection. The name-value collection in the response is a merged collection of the request name-values, plus what it parsed from the URL and any defaults name-values you had set up with the route.

The other thing I've tried is to marry navigation with the routing, particularly because Silverlight controls aren't inherently statefull as pertinent to navigation - think html pages, like when browsing a web-form and you click back, the page is rendered in a state you left it in, with some exceptions to the rule.  How we achieve this "statefulness" is with the following interfaces.

PageState

Mostly we just use the IPageNavigator interface that brings together the two base interfaces, along with a title property. Hopefully it should be self-descriptive, but IPageInitializer interface is called to initialize a page pre-displaying it. The InitializePage method takes in a name-value collection, which as you can guess comes from the routing engine's response. The IPageState interface is used to extract and inject state into a page, so when we browse forward or back the UI get's a name-value collection to help it restore it's state. It's kind of like the viewstate in concept, but you have to put the relevant state in and out yourself as the controls themselves don't collude in state management. Also one of the thing we want with M-V-VM pattern, is to manage the state in the ViewModel - these interface helps with that by separating the state management. Additionally, the routing engine is geared to take this into consideration, so in the code to plug in routes we register a route handler with the following constructor.

public NavigationRouteHandler(
	Func<ParametersDictionary, FrameworkElement> pageResolver,
	Func<FrameworkElement, IPageNavigator> navigatorResolver) 
{ 
	... 
}

Basically, it takes in two handlers, one to get a FrameworkElement for displaying in the UI and the other to get the page navigator (IPageNavigator) out for helping with the navigation.  This separation of the FrameworkElement and IPageNavigation is in recognition of the ViewModel, but it doesn't force you - so, if you don't need a IPageNavigator or don't implement the interface just pass in null. Or if your page itself implements the IPageNavigator, then return the page. All the three scenarios are shown below, which also shows how to register routes, defaults and constrains:

void SetupRoutes()
{
	// we can pass in default values in routes
    var _defaults = new ParametersDictionary();
    _defaults.Add("OrderId", -1);

	// we can also pass in constraints 
    var _constraints = new ParametersDictionary();
    _constraints.Add("OrderId", "\\w{2}");

	// here we register a route with no IPageNavigator
    RouteTable.Routes.Add("Sample1", 
		new Route("Customer/NewOrder", null,
        new NavigationRouteHandler(p => new DummyControl1(), null)));

	// here we register a route, with the page itself implementing 
	// the IPageNavigator and it also has default values passed in
    RouteTable.Routes.Add("Sample2", 
		new Route("Customer/EditOrder/{OrderId}/", _defaults,
        new NavigationRouteHandler(
			p => new DummyControl2(), u => (IPageNavigator)u)));

	// here we register a route with the page's ViewModel implementing the 
	// IPageNavigator via the DataContext and we also have constraints set
    RouteTable.Routes.Add("Sample3", 
		new Route("Customer/DeleteOrder/{OrderId}/", null, _constraints,
        new NavigationRouteHandler(
			p => new DummyControl3(), u => (IPageNavigator)(u.DataContext))));

}

This is very similar to asp.net or MVC routing, the difference being we have a custom route handler for Silverlight / WPF that implements the IRouteHandler. And if you don't like it or your setup is hooked up differently, just create your own IRouteHandler implementation and you are good to go. Essentially it has the same extensibility semantics that MVC has, and the workflow is geared towards a request-response type of setup. I hope you did notice the {OrderId} parameters in the route URL, they are parsed and included in the response's name-value collection. One omission for Silverlight is that we can't pass in anonymous types to set up constraints or default values because we can't reflect on them outside the declaring assembly.

Like I said earlier I have tried to marry routing and navigation, and so we have something called navigation containers. The containers are simply interfaces that imply a navigation model, and I have two of them build-in - one is a simple navigation container which you pass in a URL and it just returns the UI but doesn't store any history or anything. Another one is called BrowsingContainer that stores history, caches the state, and can browse forward or back. Just like everything else you can create you own containers to implement say roles-based validation on URls or extend them for deep-linking within the browser.

NavigationContainers

A benefit with these interfaces is that you can expose them through a dependency injection container, and thus loosely couple the "pages" within the app. Another important point to remember is that you route against or rather navigate in a container even though the routes are registered statically/globally - this means we can have two or more navigation containers controls (think WPF BrowserControl) and each will work with all the routes registered. I also use these interfaces as ViewModels for navigation container controls, so you can easily create your own custom skins with all the glitter and jazz you want - I just sampled one with the Silverlight.FX transitions. It's quite easy.

There is a lot more to say, but for now lets keep it for the future - however I am working on integrating this with Prism 2 and creating an asp.net like site map control. In the sample below do notice that the pages keep their state during back/forward navigation and their memory consumption is constrained to the loaded page (plus the saved states).  I'll put up the code later on CodePlex, it needs some scrubbing, Cheers.

Get Microsoft Silverlight

PS: I wanted to mention and thank this excellent series on MVC routing.

Posted by Rishi on 10-Mar-09 5:39 AM, 18 Comments

Comments (18) -

Cyril
Cyril France
on 08-Feb-09 8:23 AM
Great stuff ! Good job !

I managed the routing process on my own way in my little home framework, and I have to admit, your approach is way clearer and certainly cleaner. Can't wait to see what is going on underneath with your source code !

Rishi
Rishi
on 09-Feb-09 12:06 AM
@Cyril, thanks. And neat is exactly what I wanted it to be. I had done something similar earlier but it relied on types rather than urls for routing and navigation, but it was cumbersome. With urls and passing in name-value collections it is a lot more accessible (being web like) and a lot more loosely coupled (like don't need direct reference). Plus, it makes the application a lot more robust because even if the target doesn't exist, it doesn't crash - kinda like the internet Smile

I'll have the code out soon; I just wanted to tangle out some APIs and work a bit more on the the navigation container controls.

Bart Czernicki
Bart Czernicki United States
on 09-Feb-09 9:08 AM
I see Silverlight almost as a module that you can plug in anywhere.  I am writing some Silverlight modules for an ASP.NET MVC framework and this fits perfectly.  Having a single Silverlight application be essentrially "filtered" by a URL is a nice approach as you can have Silverlight/ASP.NET MVC place nice together.

Rishi
Rishi
on 09-Feb-09 5:19 PM
@Bart, yeah you are right Silverlight is quite open, especially if you can make use of the HTML bridge. I won't say this the equivalent of MVC framework, as from my perspective the routing is not limited to Controller/Viewer combo. Although, you could semantically do that or write a custom IRouteHander specifically addressing that, shouldn't be too hard but I rather prefer M-V-VM in Silverlight. The commanding, binding and templates feature make it better-fit.

And as for the URL filtering, you can align it with Silverlight quite well, either with passing in arguments or using an ajax with Silverlight's html bridge. So ya, you can do a lot. Also, I've got some new features I'll be showing which might interest you for pairing Silverlight and MVC.

Bart Czernicki
Bart Czernicki United States
on 10-Feb-09 7:05 PM
The reason why I brought it up, was that Silverlight/WCF REST/MVC just seem to play nice together.

When designing a Silverlight app it should be MVVM, regardless where you are hosting it.  With Silverlight 3 we will conceivably have: web, desktop, cloud and mobile (?).  

Say you are hosting on the web?  You don't want to break your Silverlight app design because your host is an ASP.NET MVC app.  What happens if its on an Azure client.  This is where I think in a Silverlight/MVC/WCF REST design where everything can be driven off of just URLs: Silverlight app state, data access via URL, controller decisions all could fit nicely into a single URL design.

Rishi
Rishi
on 11-Feb-09 4:18 AM
@Bart, I get you now.. URLs being the thread between the different platforms/paradigms etc.. I am sure REST people will appreciate your thoughts Smile

BTW, I can also see you are really hoping for SL to make a big splash on mobiles.. I really hope so too, but I'm doubtful.. SL2 is still not out on mobiles, and SL3 on mobiles seems like a dream now.. but hey, you can count on URLs being a big part of SL3.. deep linking for sure!

Bart Czernicki
Bart Czernicki United States
on 05-Mar-09 2:57 PM
The more I dig into what SL 3 has it seems like your framework as of today is the most complete for MMVM...Prism 2 is not all the way there, SL 3s naviation doesn't flow nicely with MVVM.  So the options are: custom MVVM or a framework like yours Smile

Rishi
Rishi
on 06-Mar-09 1:52 AM
Thanks Bart, indeed my goal was to be comprehensive enough to help forgo code-behinds, especially because ICommands alone don't cut it. And if you look at the behaviours present in the code, I tried to be as broad as possible in trying to abstracting the events infrastructure.  But still, I've only targeted low level / primary events, next I want to try and look at higher level semantics/behaviours to bridge the gap even more (see the hover behaviour in the demo code as a model) - but first I want to study the new Blend 3 behaviours so that I am not rehashing an already solved problem. Also, I'll have a specific post on how nRoute ties in with M-V-VM soon, you might wanna lookout for that. Cheers..

BTW: I share your disappointment in SL's absence in the mobile space..

http://www.lomoyu.com/
http://www.lomoyu.com/ People's Republic of China
on 01-Sep-12 10:51 PM
http://www.176btcq.com/


discount louboutin shoes
discount louboutin shoes United Kingdom
on 18-Oct-12 5:54 PM
how can we taobao agent meditation is the shortest period the money back. http://www.bagsforgirl.com/ is precisely this attitude as a hint that we cheated planted our specialist thinking, what kind of information, http://www.christian-louboutinoutlets.com/ via what channels, we can refer to; what kind of message, a see at this backing bad, http://www.louboutin-shoescheap.com/ you ought never conceal away a mini.

asdfasf
asdfasf People's Republic of China
on 28-Oct-12 7:06 PM
www.maccosmeticso.com/...tics-eyelashes-p-836.html
www.maccosmeticso.com/mac-lip-balm-c-37.html
www.maccosmeticso.com/...cealernc30nc55-p-464.html
www.maccosmeticso.com/...tics-eyelashes-p-448.html
www.maccosmeticso.com/...keup-eyelashes-p-835.html
www.maccosmeticso.com/...ent-and-palette-c-20.html
www.maccosmeticso.com/...ics-eye-pencil-p-485.html
www.maccosmeticso.com/...kitty-lipstick-p-758.html
www.maccosmeticso.com/...metics-eye-gel-p-449.html
www.maccosmeticso.com/...-pigment-mylar-p-348.html
www.themacwholesaler.com/...a-ingenious-p-948.html
www.themacwholesaler.com/...shes-004kg-p-1352.html
www.themacwholesaler.com/...l-ingenious-p-489.html
www.themacwholesaler.com/...racteristic-p-588.html
www.themacwholesaler.com/...85-brushes-p-1387.html
www.themacwholesaler.com/...ous-design-p-1135.html
www.themacwholesaler.com/...a-butterfly-p-882.html
www.themacwholesaler.com/...11-brushes-p-1394.html
www.themacwholesaler.com/...ss-elegant-p-1215.html
www.themacwholesaler.com/...n-exquisite-p-481.html
www.macmacwholesaler.com/...grly-0035kg-p-556.html
www.macmacwholesaler.com/...twis-0035kg-p-557.html
www.macmacwholesaler.com/...g-rose-0035-p-558.html
www.macmacwholesaler.com/mac-makeup-up-blush-sheertone-shimer-6g-color-breezy-0035kg-p-
www.macmacwholesaler.com/...chme-0035kg-p-560.html
www.macmacwholesaler.com/...tease-0035k-p-559.html
www.macmacwholesaler.com/...baby-0035kg-p-562.html
www.macmacwholesaler.com/...unit-0035kg-p-563.html
www.macmacwholesaler.com/...rmat-0035kg-p-564.html
www.macmacwholesaler.com/...-5pcs-yellow-p-99.html
www.cheapmonsterbeatspro.net/...n-colors-c-18.html
www.cheapmonsterbeatspro.net/...rdre-pro-c-17.html
www.cheapmonsterbeatspro.net/...adphones-c-16.html
www.cheapmonsterbeatspro.net/...-diamond-c-15.html
www.cheapmonsterbeatspro.net/...-solo-hd-c-14.html
www.cheapmonsterbeatspro.net/...adphones-c-13.html
www.cheapmonsterbeatspro.net/...luetooth-c-12.html
www.cheapmonsterbeatspro.net/...adphones-c-11.html
www.cheapmonsterbeatspro.net/...adphones-c-10.html
www.cheapmonsterbeatspro.net/...-tour-mac-c-9.html
www.cheapmonsterbeatspro.net/...re-studio-c-8.html
www.cheapmonsterbeatspro.net/...ats-inear-c-7.html
href="www.cheapmonsterbeatspro.net/...y-50-cent-c-6.html
www.cheapmonsterbeatspro.net/...lady-gaga-c-5.html
www.cheapmonsterbeatspro.net/...eadhpones-c-4.html
www.cheapmonsterbeatspro.net/...eadhpones-c-3.html
www.cheapmonsterbeatspro.net/...eadphones-c-2.html
www.cheapmonsterbeatspro.net/...dre-inear-c-1.html

MI
MI People's Republic of China
on 29-Oct-12 8:40 PM
Many  http://www.cosmeticscheapmac.com  women  http://www.cosmeticscheapmac.com  know the  http://www.cosmeticscheapmac.com  importance http://www.cosmeticscheapmac.com  of a  http://www.cosmeticscheapmac.com  quality set  http://www.cosmeticscheapmac.com  of makeup  http://www.cosmeticscheapmac.com   It's important www.cosmeticscheapmac.com/mac-blush-c-39.html  not only  www.cosmeticscheapmac.com/mac-brushes-c-17.html  because a   www.cosmeticscheapmac.com/mac-concealer-c-33.html  bad set  www.cosmeticscheapmac.com/mac-eye-pencil-c-34.html  could ruin  www.cosmeticscheapmac.com/mac-eyeliner-c-41.html  ur skin www.cosmeticscheapmac.com/...yeliner-gel-c-32.html  and how  www.cosmeticscheapmac.com/mac-eyeshadow-c-2.html  you look  www.cosmeticscheapmac.com/...e-eyelashes-c-47.html  but also  www.cosmeticscheapmac.com/mac-foundation-c-35.html  because  www.cosmeticscheapmac.com/mac-lady-gaga-c-27.html  there are  www.cosmeticscheapmac.com/mac-lip-balm-c-42.html  a lot of www.cosmeticscheapmac.com/mac-lip-gloss-c-43.html  dangers  www.cosmeticscheapmac.com/mac-lipstick-c-40.html  in choosing  www.cosmeticscheapmac.com/mac-makeup-bags-c-1.html  just any  www.cosmeticscheapmac.com/...emove-water-c-29.html  makeup out  www.cosmeticscheapmac.com/mac-mascara-c-31.html  there www.cosmeticscheapmac.com/...ent-palette-c-30.html  Remember, www.cosmeticscheapmac.com/...us-villains-c-46.html  it will www.cosmeticscheapmac.com/...onder-woman-c-45.html  stay for ???
http://www.maccheapmakeup.com  here is  http://www.maccheapmakeup.com  the lowdown  http://www.maccheapmakeup.com   .Only  http://www.maccheapmakeup.com  MAC sells  http://www.maccheapmakeup.com  MAC products http://www.maccheapmakeup.com . Luckily, http://www.maccheapmakeup.com  with any  http://www.maccheapmakeup.com/mac-blush-c-39.html  brand www.maccheapmakeup.com/mac-brushes-c-17.html  there is www.maccheapmakeup.com/mac-concealer-c-33.html   always  www.maccheapmakeup.com/...l-colour-names-c-28.html  some  www.maccheapmakeup.com/mac-eye-pencil-c-34.html  overrun www.maccheapmakeup.com/mac-eyeliner-c-41.html  discontinued/ www.maccheapmakeup.com/mac-eyeliner-gel-c-32.html  shelf pull  www.maccheapmakeup.com/mac-eyeshadow-c-2.html  stock that www.maccheapmakeup.com/...alse-eyelashes-c-47.html  ends up  www.maccheapmakeup.com/mac-foundation-c-35.html  on eBay  www.maccheapmakeup.com/mac-lady-gaga-c-27.html  or other  www.maccheapmakeup.com/mac-lip-balm-c-42.html  discounted  www.maccheapmakeup.com/mac-lip-gloss-c-43.html  websites  www.maccheapmakeup.com/mac-lipstick-c-40.html  Because  www.maccheapmakeup.com/mac-makeup-bags-c-1.html  MAC is   www.maccheapmakeup.com/...p-remove-water-c-29.html  so popular www.maccheapmakeup.com/mac-mascara-c-31.html  there  www.maccheapmakeup.com/...igment-palette-c-30.html  is even  www.maccheapmakeup.com/...omous-villains-c-46.html less of  www.maccheapmakeup.com/mac-wonder-woman-c-45.html this type ???  The MAC  www.cosmeticswholesalemac.com/...lette-c-2_47.html  cosmetic  www.cosmeticswholesalemac.com/...e-water-c-46.html company,  www.cosmeticswholesalemac.com/...hadow-c-2_45.html  also known www.cosmeticswholesalemac.com/...lette-c-2_44.html  as Makeup  www.cosmeticswholesalemac.com/...illains-c-37.html  Art Cosmetics www.cosmeticswholesalemac.com/...yeliner-c-32.html  is an  www.cosmeticswholesalemac.com/...ipstick-c-31.html  internationally www.cosmeticswholesalemac.com/mac-blush-c-30.html   sold brand www.cosmeticswholesalemac.com/...tion-c-26_28.html  of cosmetics www.cosmeticswholesalemac.com/...ream-c-26_27.html  that originally www.cosmeticswholesalemac.com/...ndation-c-26.html  became www.cosmeticswholesalemac.com/...-pencil-c-25.html  famous www.cosmeticswholesalemac.com/...ip-balm-c-33.html  without  www.cosmeticswholesalemac.com/...p-gloss-c-34.html any advertising www.cosmeticswholesalemac.com/...tion-c-26_35.html  Instead,  www.cosmeticswholesalemac.com/...r-woman-c-36.html  it cultivated  www.cosmeticswholesalemac.com/...-set-c-13_38.html its amazing www.cosmeticswholesalemac.com/...-set-c-13_39.html  popularity www.cosmeticswholesalemac.com/...elashes-c-40.html  only through  www.cosmeticswholesalemac.com/...-set-c-13_41.html  word of  www.cosmeticswholesalemac.com/...lette-c-2_43.html  mouth  www.cosmeticswholesalemac.com/...ncealer-c-24.html  endorsements  www.cosmeticswholesalemac.com/...ner-gel-c-23.html   by professionals  www.cosmeticswholesalemac.com/...tion-c-26_29.html  in the www.cosmeticswholesalemac.com/...-set-c-13_42.html   field  www.cosmeticswholesalemac.com/...mascara-c-22.html  of makeup www.cosmeticswholesalemac.com/...alette-c-2_9.html   From models www.cosmeticswholesalemac.com/...alette-c-2_8.html   and celebrities  www.cosmeticswholesalemac.com/...alette-c-2_7.html  to professional  www.cosmeticswholesalemac.com/...alette-c-2_6.html  makeup www.cosmeticswholesalemac.com/...alette-c-2_5.html  artists,  www.cosmeticswholesalemac.com/...alette-c-2_4.html  they all  www.cosmeticswholesalemac.com/...r-kits-c-2_3.html   had MAC www.cosmeticswholesalemac.com/...yeshadow-c-2.html  on their www.cosmeticswholesalemac.com/...lette-c-2_10.html  lips  www.cosmeticswholesalemac.com/...lette-c-2_11.html (in both www.cosmeticswholesalemac.com/...lette-c-2_12.html  the literal www.cosmeticswholesalemac.com/...palette-c-21.html  and figurative  www.cosmeticswholesalemac.com/...r-names-c-20.html  senses). www.cosmeticswholesalemac.com/...kits-c-13_18.html  The company www.cosmeticswholesalemac.com/...dy-gaga-c-19.html  was created www.cosmeticswholesalemac.com/...shes-c-13_17.html  in 1985  www.cosmeticswholesalemac.com/...sets-c-13_16.html  in Toronto, www.cosmeticswholesalemac.com/...-set-c-13_15.html  Canada   www.cosmeticswholesalemac.com/...-set-c-13_14.html  by Franks www.cosmeticswholesalemac.com/...brushes-c-13.html  Toskan  www.cosmeticswholesalemac.com/...eup-bags-c-1.html  and Angelo ???Composing  http://www.promonsterbeats.net/   music is  www.promonsterbeats.net/...et-by-50-cent-c-17.html  a completely  www.promonsterbeats.net/...dy-headphones-c-16.html  natural   www.promonsterbeats.net/...er-headphones-c-15.html  process.  www.promonsterbeats.net/diddybeats-inear-c-14.html  It is  www.promonsterbeats.net/bose-headhpones-c-13.html  more about  www.promonsterbeats.net/...reo-bluetooth-c-12.html  expressing  www.promonsterbeats.net/...rdre-tour-mac-c-11.html  yourself  www.promonsterbeats.net/...ats-lady-gaga-c-10.html  with by  www.promonsterbeats.net/...edition-colors-c-9.html   using music  www.promonsterbeats.net/...s-by-drdre-pro-c-8.html   as a  www.promonsterbeats.net/vmoda-headphones-c-7.html  channel to  http://www.promonsterbeats.net/blog/  express your creativity ???

Burberry Outlet Online
Burberry Outlet Online People's Republic of China
on 06-Nov-12 5:24 PM
http://www.hotburberry-outlets.com/  Burberry Sale  
http://www.burberryoutletsale-4u.com/  Burberry Outlet  
http://www.burberryoutletsale-us.com/  Burberry Outlet Online  
http://www.hotburberry-outlets.com/  Burberry Outlet  
http://www.burberryoutletsale-4u.com/  Burberry Outlet Online  
http://www.burberryoutletsale-us.com/  Burberry Outlet  
http://www.hotburberry-outlets.com/  Burberry Outlet Online  
http://www.burberryoutletsale-4u.com/  Burberry Sale  
http://www.burberryoutletsale-us.com/  Burberry Sale  
http://www.nikenfljerseysonline.net/  Nike NFL Jerseys  
http://www.nikenfljerseysonline.net/  Nike NFL Jerseys  
http://www.nikenfljerseysonline.net/  Nike NFL Jerseys  
http://www.nikenfljerseysonline.net/  Nike NFL Jerseys  
http://www.nikenfljerseysonline.net/  Cheap Jerseys From China  
http://www.nikenfljerseysonline.net/  Cheap Nfl Jerseys  
http://www.nikenfljerseysonline.net/  Cheap Nerseys Wholesale  
http://www.nikenfljerseysonline.net/  Nike Jerseys Houston Texans  
http://www.nikenfljerseysonline.net/  Nike Washington Redskins  
http://www.nikenfljerseysonline.net/  Nike NFL Jerseys Houston Texans  
http://www.nikenfljerseysonline.net/  Nike NFL Jerseys Washington Redskins  
http://cheapjerseyss2012.weebly.com/  NFL Jerseys Shop  
http://cheapjerseyss2012.weebly.com/  Nike NFL Jerseys  
http://cheapjerseyss2012.weebly.com/  NFL Jerseys Shop  
http://cheapjerseyss2012.weebly.com/  NFL Jerseys Cheap  
http://nikenfljerseys2u.weebly.com/  NFL Jerseys Shop  
http://nikenfljerseys2u.weebly.com/  Nike NFL Jerseys  
http://nikenfljerseys2u.weebly.com/  NFL Jerseys Shop  
http://nikenfljerseys2u.weebly.com/  NFL Jerseys Cheap  
http://nfljerseyss2u.weebly.com/  NFL Jerseys Shop  
http://nfljerseyss2u.weebly.com/  Nike NFL Jerseys  
http://nfljerseyss2u.weebly.com/  NFL Jerseys Shop  
http://nfljerseyss2u.weebly.com/  NFL Jerseys Cheaplf008

adfasdfa
adfasdfa People's Republic of China
on 08-Nov-12 2:09 PM
www.themacwholesaler.com/...al-lipglass-p-963.html
www.themacwholesaler.com/...n-delicate-p-1001.html
www.themacwholesaler.com/...kg-palette-p-1372.html
www.themacwholesaler.com/...-wonderful-p-1302.html
www.themacwholesaler.com/...hion-002kg-p-1451.html
www.themacwholesaler.com/...erent-sizes-p-724.html
www.themacwholesaler.com/...kg-delicate-p-523.html
www.themacwholesaler.com/...site-design-p-767.html
www.themacwholesaler.com/...l-ungaro-co-p-355.html
www.themacwholesaler.com/...and-special-p-713.html
www.macmacwholesaler.com/...027-us-oz-e-p-637.html
www.macmacwholesaler.com/...an-eyeliner-p-638.html
www.macmacwholesaler.com/...nt-a-levres-p-639.html
www.macmacwholesaler.com/...er-10colors-p-640.html
www.macmacwholesaler.com/...ok-in-a-box-p-641.html
www.macmacwholesaler.com/...lick-liquid-p-642.html
www.macmacwholesaler.com/...ue-eyeliner-p-645.html
www.macmacwholesaler.com/...k-up-0012kg-p-644.html
www.macmacwholesaler.com/...ck-eyeliner-p-643.html
www.macmacwholesaler.com/...s-5pcs-yellow-p-99.htm
www.cheapmonsterbeatspro.net/...adphone-p-170.html
www.cheapmonsterbeatspro.net/...eadphone-p-39.html
www.cheapmonsterbeatspro.net/...adphone-p-334.html
www.cheapmonsterbeatspro.net/...adphone-p-106.html
www.cheapmonsterbeatspro.net/...adphones-p-16.html
www.cheapmonsterbeatspro.net/...adphones-p-68.html
www.cheapmonsterbeatspro.net/...adphones-p-47.html
www.cheapmonsterbeatspro.net/...adphone-p-329.html
www.cheapmonsterbeatspro.net/...eadphone-p-45.html
www.cheapmonsterbeatspro.net/...adphones-p-95.html



sdfasdfas
sdfasdfas People's Republic of China
on 18-Nov-12 7:14 PM
www.themacwholesaler.com/...al-lipglass-p-963.html
www.themacwholesaler.com/...n-delicate-p-1001.html
www.themacwholesaler.com/...kg-palette-p-1372.html
www.themacwholesaler.com/...-wonderful-p-1302.html
www.themacwholesaler.com/...hion-002kg-p-1451.html
www.themacwholesaler.com/...erent-sizes-p-724.html
www.themacwholesaler.com/...kg-delicate-p-523.html
www.themacwholesaler.com/...site-design-p-767.html
www.themacwholesaler.com/...l-ungaro-co-p-355.html
www.themacwholesaler.com/...and-special-p-713.html
www.cheapmonsterbeatspro.net/...adphone-p-170.html
www.cheapmonsterbeatspro.net/...eadphone-p-39.html
www.cheapmonsterbeatspro.net/...adphone-p-334.html
www.cheapmonsterbeatspro.net/...adphone-p-106.html
www.cheapmonsterbeatspro.net/...adphones-p-16.html
www.cheapmonsterbeatspro.net/...adphones-p-68.html
www.cheapmonsterbeatspro.net/...adphones-p-47.html
www.cheapmonsterbeatspro.net/...adphone-p-329.html
www.cheapmonsterbeatspro.net/...eadphone-p-45.html
www.cheapmonsterbeatspro.net/...adphones-p-95.html
www.monstercheapbeats.com/...headphones-p-116.html
www.monstercheapbeats.com/...-headphone-p-153.html
www.monstercheapbeats.com/...-headphones-p-11.html
www.monstercheapbeats.com/...r-headphone-p-34.html
www.monstercheapbeats.com/...headphones-p-184.html
www.monstercheapbeats.com/...r-headphone-p-39.html
www.monstercheapbeats.com/...headphones-p-297.html
www.monstercheapbeats.com/...-headphone-p-105.html
www.monstercheapbeats.com/...-headphone-p-194.html
www.monstercheapbeats.com/...-headphone-p-160.html
www.monstercheapbeats.com/...-headphone-p-107.html
www.longchampbagcheap.com/...-classic-bag-c-1.html
www.longchampbagcheap.com/...-lm-handbag-c-10.html
www.longchampbagcheap.com/...red-backpack-c-9.html
www.longchampbagcheap.com/...e-travel-bag-c-8.html
www.longchampbagcheap.com/...essenger-bag-c-7.html

Cheap Cleveland Browns Jerseys
Cheap Cleveland Browns Jerseys United States
on 26-Nov-12 2:22 PM
Officially licensed NFL football jerseys and apparel online store http://www.brownsjerseyshop.com. More outstanding when compared with other kinds of conventional jerseys for the reason that the 2012 NFL Cleveland Browns jerseys are made with fashionable design of nike elite 51 uniform along with the splendid quality.  


tuniao
tuniao People's Republic of China
on 25-Dec-12 12:22 PM
http://www.parkafans.com Canada Goose Parka
http://www.offerparka.com Canada Goose Sale
http://www.obyojeremyscott.com  Adidas Jeremy Scott
http://www.jeremyscottleopard.com Jeremy Scott Adidas
http://www.discountjeremyscott.com Adidas Wings

purupoiiqnea
purupoiiqnea People's Republic of China
on 25-Dec-12 12:24 PM

http://www.lovejeremyscott.com Jeremy Scott Adidas
http://www.needparka.com Canada Goose Coats
http://www.jeremyscottbuy.com Adidas Jeremy Scott
hhttp://www.shopparka.com Canada Goose Outlet
http://www.jeremyscottworks.com Jeremy Scott Shoes

BabySuggs
BabySuggs United States
on 27-Dec-12 8:47 PM
http://www.bearsfanmall.com/johnny-knox-jersey           Johnny Knox Jersey
http://www.bearsfanmall.com/julius-peppers-jersey           Julius Peppers Jersey
http://www.bearsfanmall.com/adam-podlesh-jersey           Adam Podlesh Jersey
http://www.bearsfanmall.com/charles-tillman-jersey           Charles Tillman Jersey
http://www.bearsfanmall.com/chris-conte-jersey           Chris Conte Jersey
http://www.bearsfanmall.com/corey-wootton-jersey           Corey Wootton Jersey
http://www.bearsfanmall.com/dan-hampton-jersey           Dan Hampton Jersey
www.bearsfanmall.com/dane-sanzenbacher-jersey           Dane Sanzenbacher Jersey
http://www.bearsfanmall.com/dick-butkus-jersey           Dick Butkus Jersey
http://www.bearsfanmall.com/gabe-carimi-jersey           Gabe Carimi Jersey
http://www.bearsfanmall.com/gale-sayers-jersey           Gale Sayers Jersey
http://www.bearsfanmall.com/henry-melton-jersey           Henry Melton Jersey

barbour jacket for sale
barbour jacket for sale Kazakhstan
on 02-Jan-13 12:42 PM
We are professional UK barbour jackets online retailer. With many years extensive knowledge, you can find full range of kids barbour jackets, mens barbour jackets and womens barbour jackets with top quality in our ur barbour sale uk shop. The barbour online here can give you a big surprise and you will be filled with satisfaction, as every barbour jacket in our barbour store mixs innovative materials with craftsmanship and attention to detail. The cheapest barbour jacket can absolutely bring out your true personality. NOW all barbour jacket sale are with a huge discount now that you should not miss our barbour online shop. They are indeed fine and cheap! Clients first, reputation first!
http://www.barbour-sale-uk.net/

Custom Texans Jersey
Custom Texans Jersey Armenia
on 04-Jan-13 7:25 PM
Custom NFL Jersey  http://www.nflcustomproshop.com    
Custom 49ers Jersey  www.nflcustomproshop.com/...49ers-jersey-c-24.html    
Custom Bengals Jersey  www.nflcustomproshop.com/...engals-jersey-c-5.html    
Custom Broncos Jersey  www.nflcustomproshop.com/...roncos-jersey-c-9.html    
Custom Colts Jersey  www.nflcustomproshop.com/...colts-jersey-c-13.html    
Custom Cowboys Jersey  www.nflcustomproshop.com/...wboys-jersey-c-10.html    
Custom Falcons Jersey  www.nflcustomproshop.com/...alcons-jersey-c-4.html    
Custom Giants Jersey  www.nflcustomproshop.com/...iants-jersey-c-20.html    
Custom Packers Jersey  www.nflcustomproshop.com/...ckers-jersey-c-14.html    
Custom Patriots Jersey  www.nflcustomproshop.com/...riots-jersey-c-21.html    
Custom Ravens Jersey  www.nflcustomproshop.com/...ravens-jersey-c-1.html    
Custom Redskins Jersey  www.nflcustomproshop.com/...skins-jersey-c-32.html    
Custom Seahawks Jersey  www.nflcustomproshop.com/...hawks-jersey-c-26.html    
Custom Steelers Jersey  www.nflcustomproshop.com/...elers-jersey-c-27.html    
Custom Texans Jersey  www.nflcustomproshop.com/...exans-jersey-c-11.html    
Custom Vikings Jersey  www.nflcustomproshop.com/...kings-jersey-c-16.html    
Custom Bears Jersey  www.customnflonline.com/Custom-Bears-Jersey-8/    
Custom Packers Jersey  www.customnflonline.com/Custom-Packers-Jersey-14/    
Custom Broncos Jersey  www.customnflonline.com/Custom-Broncos-Jersey-9/    
Custom Bengals Jersey  www.customnflonline.com/Custom-Bengals-Jersey-5/    
Custom Vikings Jersey  www.customnflonline.com/Custom-Vikings-Jersey-16/    
Custom Raiders Jersey  www.customnflonline.com/Custom-Raiders-Jersey-25/    
Custom Patriots Jersey  www.customnflonline.com/Custom-Patriots-Jersey-21/    
Custom Ravens Jersey  www.customnflonline.com/Custom-Ravens-Jersey-1/    

amandabridal
amandabridal People's Republic of China
on 15-Jan-13 5:58 PM
www.amandaapparel.com/buy/green-belly-dance-skirt/ green belly dance skirt
www.amandaapparel.com/.../ bunny costumes for women
www.amandaapparel.com/.../ camel leather jacket women
www.amandaapparel.com/buy/cream-colored-shoes/ cream colored shoes
www.amandaapparel.com/.../ brown casual lace up boots
www.amandaapparel.com/buy/chobits-freya-costume/ chobits freya costume
www.amandaapparel.com/buy/final-fantasy-costume/ final fantasy costume
www.amandaapparel.com/.../ green belly dance costume
www.amandaapparel.com/buy/purple-wedding-jackets/ purple wedding jackets
www.amandaapparel.com/.../ royal blue flower girl dresses
www.amandaapparel.com/buy/sexy-catwoman-costume/ sexy catwoman costume

amandabridal
amandabridal People's Republic of China
on 15-Jan-13 5:59 PM
www.amandabridal.com/.../ junior bridesmaid dresses
www.amandabridal.com/.../ long sleeve cocktail dresses
www.amandabridal.com/buy/mini-wedding-dresses/ mini wedding dresses
www.amandabridal.com/.../ navy blue bridesmaid dresses
www.amandabridal.com/.../ one shoulder white cocktail dress
www.amandabridal.com/.../ bridesmaid dresses burgundy
www.amandabridal.com/buy/gray-wedding-shoes/ gray wedding shoes
www.amandabridal.com/.../ black bridesmaid dress  red sash
www.amandabridal.com/buy/blue-dress-gold-ribbon/ blue dress  gold ribbon

amandabridal
amandabridal People's Republic of China
on 15-Jan-13 6:01 PM
www.amandabridal.com/.../ junior bridesmaid dresses
www.amandabridal.com/.../ long sleeve cocktail dresses
www.amandabridal.com/buy/mini-wedding-dresses/ mini wedding dresses
www.amandabridal.com/.../ navy blue bridesmaid dresses
www.amandabridal.com/.../ one shoulder white cocktail dress
www.amandabridal.com/.../ bridesmaid dresses burgundy
www.amandabridal.com/buy/gray-wedding-shoes/ gray wedding shoes
www.amandabridal.com/.../ black bridesmaid dress  red sash
www.amandabridal.com/buy/blue-dress-gold-ribbon/ blue dress  gold ribbon

Patrick Willis Jersey
Patrick Willis Jersey People's Republic of China
on 17-Jan-13 7:16 PM
www.patriotsfansprostore.com/tom-brady-jersey           Tom Brady Jersey
www.patriotsfansprostore.com/rob-gronkowski-jersey           Rob Gronkowski Jersey
www.patriotsfansprostore.com/wes-welker-jersey           Wes Welker Jersey
www.patriotsfansprostore.com/aaron-hernandez-jersey           Aaron Hernandez Jersey

yongremy
yongremy United States
on 31-Jan-13 7:06 PM
as the profootballweekly

Sundays in the fall and winter are for the Washington Redskins! Following the Redskins! fantasy football soon consumes   http://www.7jerseys.us/  my life as I anxiously watch NFL RedZone! which may be the best channel ever invented! awaiting updates on my  http://www.7jerseys.us/  starting roster! What turned into a fun hobby has soon transformed into myself obsessing over the waiver wire on Tuesday morning.

nfl jerseys
nfl jerseys People's Republic of China
on 17-Feb-13 12:26 AM
http://www.nfltradejerseys.com

louis10
louis10 United States
on 16-Mar-13 8:44 AM
Samsung Galaxy S4 looks great anyone got one to talk about. Thanks for you good work, just saying hello from Germany

GetAirPurifiers
GetAirPurifiers United States
on 29-Mar-13 10:09 PM
Thanks For the article. Great Information. Keep up the great work and Share more such information with people across the world.

dfds
dfds People's Republic of China
on 21-Apr-13 3:06 PM
xiaochenThe Air Jordan 5 sneakers were released in 1990.[url=nsidc.org/.../coach-outlet-online-store.html]Coach Outlet Online[/url] The shoe displayed raw talent of the cheap jordan shoe brand and what they had to offer.[url=nsidc.org/.../coach-factory-outlet-online.html]Coach Factory Outlet[/url] Many of the shoes aroud this period waere designed by Tinker hartfield so not only Nike,[url=nsidc.org/.../coach-bags-purses-outlet.html]Coach Purses Outlet[/url] Michael Jordan, [url=nsidc.org/.../coach-factory-outlet-online.html]Coach Factory[/url]and the NBA was reciveing homage but many brands and companies were chasing down .[url=coachfactoryoutletonline.osneaker.org]Coach Factory Outlet[/url]

Chris
Chris United States
on 24-Apr-13 9:01 PM
Well done! Keep up the good work!
http://essaycastle.co.uk/

jacquetta27
jacquetta27 United States
on 02-May-13 12:23 PM
Great post! I love reading this stuff. Keep up the good work!

Pingbacks and trackbacks (2)+

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading