这个问题基本上是要知道并证明我所做的是一个好的做法,还是有其他方法可以解决问题。
这是问题....
*我有一个MVC应用程序,有许多控制器和操作方法。客户将从不同来源(谷歌,bing,第三方网站)访问不同的操作方法,最后添加查询字符串签名。
*因为我不想在控制器的每个动作中检查查询字符串值。我创建了一个新的控制器“BaseController.cs”,它继承自MVC Controller类。并实现以下代码。所有应用程序控制器都将继承BaseController。
public class BaseController : Controller
{
public BaseController():base()
{
string siteReference = HttpContext.Request["ref"];
}
}
我要求MVC的专家建议更好的方法。提前谢谢。
-kk
答案 0 :(得分:3)
执行此操作的方法较少,您可以使用全局操作过滤器来执行相同操作,而无需使用基本控制器,并且您更喜欢组合而不是继承。
public class GetQueryString: IActionFilter, IMvcFilter
{
public void OnActionExecuting(ActionExecutingContext filterContext)
{
string siteReference = filterContext.HttpContext.Request["ref"];
}
public void OnActionExecuted(ActionExecutedContext filterContext)
{
}
public bool AllowMultiple
{
get { return false; }
}
public int Order
{
get { return Filter.DefaultOrder; }
}
}