One thing that I haven't really liked about MVC was using RenderPartial instead of an actual UserControl. Its not that you can't use them but that there is a disconnect between the control state and the render phase which makes it pretty much impossible to really work with them inline.

Using the existing RenderPartial requires that you pass in the name of the UserControl that you want to render. You can also provide an object argument that is passed in as the 'Model' for the partial view. The UserControl can access the passed in object via the 'Model' property -- even cast it into the correct type directly.

Personally, I use a lot of Models in my projects now. I used to suggest that you pass around objects using a wrapper for anonymous types but I've found that if you plan to move it from a Controller to a View or from a View to a UserControl then you ought to define a class.

Using RenderPartial Without Really Using It

So instead of calling RenderPartial directly, what about using the Model that we have in place to make the call for us. Not only that, we can even define our class to accept arguments directly. Here is an example of a simple dialog box...