有没有办法将视图文件名设置为 Action 之上的属性?
前任:
[ViewName("~/Views/CustomerInformation.cshtml")]
public ActionResult ViewCustomers()
{
//
}
目的是在运行时动态更改视图文件。
有没有办法将视图文件名设置为 Action 之上的属性?
前任:
[ViewName("~/Views/CustomerInformation.cshtml")]
public ActionResult ViewCustomers()
{
//
}
目的是在运行时动态更改视图文件。
当然,您可以覆盖该OnActionExecuted
方法并替换操作过滤器中指定的视图名称所使用的原始视图名称:
public class ViewNameAttribute : ActionFilterAttribute
{
private readonly string _viewName;
public ViewNameAttribute(string viewName)
{
_viewName = viewName;
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var result = filterContext.Result as ViewResultBase;
if (result != null)
{
result.ViewName = _viewName;
}
}
}
然后你可以返回一个虚拟视图:
[ViewName("~/Views/CustomerInformation.cshtml")]
public ActionResult ViewCustomers()
{
return View();
}
但是我想知道当您可以直接编写时,自定义操作过滤器的实际应用是什么:
public ActionResult ViewCustomers()
{
return View("~/Views/CustomerInformation.cshtml");
}
您似乎没有为框架已经提供的自定义操作过滤器带来太多价值。