Skip to content

Instantly share code, notes, and snippets.

@mhinze
Created November 19, 2013 19:43
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save mhinze/7551259 to your computer and use it in GitHub Desktop.
Save mhinze/7551259 to your computer and use it in GitHub Desktop.
BaseController.cs with Async
using System.Threading.Tasks;
using System.Web.Mvc;
using JetBrains.Annotations;
using ShortBus;
public abstract class BaseController : Controller
{
public IMediator Mediator { get; set; }
protected Response<TResult> Query<TResult>(IQuery<TResult> query)
{
return Mediator.Request(query);
}
protected async Task<Response<T>> QueryAsync<T>(IQuery<T> query)
{
return await Mediator.RequestAsync(query);
}
protected void Command<T>(T command)
{
var result = Mediator.Send(command);
if (result.HasException())
{
throw result.Exception;
}
}
protected async Task CommandAsync<T>(T command)
{
var result = await Mediator.SendAsync(command);
if (result.HasException())
{
throw result.Exception;
}
}
[AspMvcView]
protected ViewResult View<TData>(Response<TData> model)
{
return View(string.Empty, model);
}
protected ViewResult View<TData>([AspMvcView] string viewName, Response<TData> model)
{
if (model.HasException())
return base.View("~/Views/Shared/Error.cshtml", model);
return View(viewName, model.Data);
}
[AspMvcPartialView]
protected PartialViewResult PartialView<TData>(Response<TData> model)
{
return PartialView(string.Empty, model);
}
protected PartialViewResult PartialView<TData>([AspMvcPartialView] string viewName, Response<TData> model)
{
if (model.HasException())
return base.PartialView("~/Views/Shared/ErrorPartial.cshtml", model);
return PartialView(viewName, model.Data);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment