Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Sounds to me like you want a custom <a href="http://msdn.microsoft.com/en-us/library/system.web.mvc.controlleractioninvoker%28v=vs.108%29.aspx" rel="nofollow">ControllerActionInvoker</a> e.g.</p> <pre><code>public class ReadControllerActionInvoker : ControllerActionInvoker { private IMediator mediator; public ReadControllerActionInvoker(IMediator mediator) { this.mediator = mediator; } protected override ActionResult CreateActionResult(ControllerContext controllerContext, ActionDescriptor actionDescriptor, object actionReturnValue) { ViewDataDictionary model = null; // get our query parameter var query = GetParameterValue(controllerContext, actionDescriptor.GetParameters().Where(x =&gt; x.ParameterName == "query").FirstOrDefault()); // pass the query to our mediator if (query is DetailsQuery) model = new ViewDataDictionary(this.mediator.Request((DetailsQuery)query)); // return the view with read model returned from mediator return new ViewResult { ViewName = actionDescriptor.ActionName, ViewData = model }; } } </code></pre> <p>We then introduce a base controller where we inject our custom <code>ControllerActionInvoker</code></p> <pre><code>public class BaseReadController : Controller { protected IMediator Mediator { get; set; } protected override void Initialize(System.Web.Routing.RequestContext requestContext) { base.Initialize(requestContext); ActionInvoker = new ReadControllerActionInvoker(Mediator); } } </code></pre> <p>Then finally in our controller, we derive from our base and return the query information from our actions e.g.</p> <pre><code>public class QueryController : BaseReadController { // our actions now do nothing but define a route for our queries public void About(DetailsQuery query) { } } </code></pre> <p>What you effectively end up with here is bodiless actions so you lose the repetitive code but, in my opinion, you sacrifice some readability (there is a lot of voodoo happening in the controller now which isn't immediately obvious).</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload