Em vez de repetir ações comuns em seu código, tente implementar classes abstratas para fazer o trabalho.
Cada controlador na ASP.NET MVC lida com TempMessages, ViewBags, novas instâncias de classes e muito mais.
Por que você não cria um controlador básico que implementa essas ações comuns e pode ser acessível por todos os controladores derivados?
Algo assim:
public abstract partial class BaseController : Controller
{
public UnitOfWork unitOfWork;
public BaseController()
{
unitOfWork = new UnitOfWork();
}
public String ErrorMessage
{
get { return TempData["ErrorMessage"] == null ? String.Empty : TempData["ErrorMessage"].ToString(); }
set { TempData["ErrorMessage"] = value; }
}
}
E pode ser usado assim:
public partial class HomeController : BaseSecuredController
{
public KioskController()
: base()
{
}
public virtual ActionResult Index()
{
try
{
var result = unitOfWork.DoSomething();
}
catch(Exception ex)
{
ErrorMessage = "Ooops, something went wrong: " + ex.Message;
}
return View();
}
}
Muito mais limpo, não acha? Você usa esse tipo de método? Algumas pessoas têm medo de modificadores “estranhos”, como abstrato ou parcial.