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