我使用O / R映射器,可以通用方式从DB重新加载对象。我希望能够在创建映射对象后立即拦截请求,以便重新加载它们。
ActionFilters当然是存在的,但问题是ActionFilters(或我见过的例子)可以处理表单提供的数据,而不是在创建对象之后。
我看了控制器的可覆盖的方法,但没有发现任何明显的东西引起了我的注意。有没有人知道这样做的方法?
感谢您的建议!
纳赛尔
答案 0 :(得分:0)
如果我理解你需要这样的东西。
public class Navigate : ActionFilterAttribute, IActionFilter
{
void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
{
ViewResult view = filterContext.Result as ViewResult;
}
}
在视图中,您将找到属于当前Controller的view.ViewData.Model,您可以使用此映射数据执行所需的所有操作。 如果我是对的,请告诉我:)。
答案 1 :(得分:0)
您需要的是自定义模型装订器。您可以从默认的ModelBinder类继承并提供所需的逻辑。
例如,如果你有这个:
public ActionResult Save([Bind(typeof(CustomModelBinder))] Customer customer)
{
/* ... */
}
模型绑定器将为您创建对象,但您可以选择首先从数据库中获取它(对于现有记录)。