【发布时间】:2009-05-07 15:33:38
【问题描述】:
在我当前的项目中,我有一个自定义 ViewData,它具有(以及其他)以下属性:
自定义视图数据 + IList siteLangauges + 语言 CurrentLanguage + T9nProvider我所有的网址都是这样的:
http://someUrl.com/{siteLanguage}/{restOfUrlIncludingcontrollersAndACtions}
我想创建一个 ActionAttribute 来捕获每个请求,检查 siteLanguage 值是什么,并在 CustomViewData 上设置 Language 值。 我当前(非工作)的代码是这样的:
public class TranslateAttribute: ActionFilterAttribute, IActionFilter
{
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{
ViewDataDictionary viewData = filterContext.Controller.ViewData;
if (viewData is CustomViewData) {
(viewData as CustomViewData).Language = new Language(filterContext.ActionParameters["siteLanguage"] as string));
}
base.OnActionExecuting(filterContext);
}
void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
}
}
第一个问题是 viewdata 永远不是 customviewdata。为什么不呢?
【问题讨论】:
标签: c# .net asp.net-mvc action-filter