我试图通过键入urlwebsite.com/ area 1/basecontroller/ method 1(这个区域还包含将要显示的视图)来阻止访问整个区域/控制器,同时仍然能够继承该控制器并使用原来的控制器(例如so website.com/area2/extendedbasecontroller/method1. )。
扩展的basecontroller中不存在method1,它将只执行来自basecontroller的method1。
这是可能的,还是可以以另一种方式实现?
发布于 2014-08-07 13:25:40
另一种方法是您想要的--提取一个执行method1的类,然后在两个控制器中引用这个类。MVC控制器实际上不应该在一般情况下相互调用。
发布于 2014-01-09 07:44:17
我不知道这是否是个好办法,但看起来这是我想要做的事情:
public class BlockActionFilter : ActionFilterAttribute,IActionFilter
{
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{
var area = filterContext.RouteData.DataTokens["area"].ToString();
if(area == "area1")
{
filterContext.Result = new RedirectResult("~/Home/Index");
}
this.OnActionExecuting(filterContext);
}
}我可以通过将basecontroller继承到area1中的extendedbasecontroller并通过该方法来访问area2中的方法,但不能在area1中直接使用basecontroller。
https://softwareengineering.stackexchange.com/questions/223464
复制相似问题