The short answer is no it does not incompatible with MVC. In fact it helps.
Your view can be composed of related and unrelated data. There are different tools available to help you build up your screen in a way that applies the Single Responsibility Principle (SRP) and understandable. I found a good summary of why you would choose one over the other.
Let's say we are developing a blog. We have our main article with comments underneath. In this case it would be reasonable to use
RenderPartial() for the comments. Example:
public ActionResult Display(int id)
Model = Articles.Find(id);
if (Model == null) return NotFound();
In the View you would have something like this:
@foreach(var comment in Model.Comments)
So far so good. It's all within what you are expecting. However, what if you also want to list the categories on the same page? or possibly the top 5 articles? That's where you would use
RenderAction(). The logic of what you want to display has nothing to do with the content you just set up. It's also something that would be less than desirable to include in the
This allows the framework to push on the action method call to the stack and render the results directly to the same output. When the output is rendered the framework pops off that context to return you to the main page. That lets you embed unrelated content in the same page because it's good for users, but still maintain an understandable codebase.