Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 MVC阻止基类控制器操作路由到_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 MVC阻止基类控制器操作路由到

Asp.net mvc 3 MVC阻止基类控制器操作路由到,asp.net-mvc-3,Asp.net Mvc 3,对于我的几个控制器,我有一个基类来实现常见的操作 e、 g. -BaseAccountController具有登录操作 -PublicAccountController继承自BaseAccountController并实现进一步的操作 -CorporateAccountController继承自BaseAccountController并执行进一步的操作 这将提供以下路径: -基本帐户/登录名 -公共帐户/登录 -企业帐户/登录 删除route BaseCount/Login的标准方法是什么,因

对于我的几个控制器,我有一个基类来实现常见的操作

e、 g.
-BaseAccountController具有登录操作
-PublicAccountController继承自BaseAccountController并实现进一步的操作
-CorporateAccountController继承自BaseAccountController并执行进一步的操作

这将提供以下路径:
-基本帐户/登录名
-公共帐户/登录
-企业帐户/登录


删除route BaseCount/Login的标准方法是什么,因为这是不需要的。我希望控制器上有一个属性:)

您可以为基本控制器使用以下自定义属性:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
public class ClosedAttribute : ActionFilterAttribute
{
   public override void OnActionExecuting(ActionExecutingContext filterContext)
   {
       filterContext.Result = new HttpStatusCodeResult(404);
   }
}
您将收到404的基本控制器路由-BaseCount/登录。但请确保继承的属性为false(如示例所示)

使用的示例:

[Closed]
public class BaseAccountController : Controller
{
    ...
}

如果需要,您可以在此处阅读有关自定义操作筛选器的更多信息-

您可以为基本控制器使用以下自定义属性:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
public class ClosedAttribute : ActionFilterAttribute
{
   public override void OnActionExecuting(ActionExecutingContext filterContext)
   {
       filterContext.Result = new HttpStatusCodeResult(404);
   }
}
您将收到404的基本控制器路由-BaseCount/登录。但请确保继承的属性为false(如示例所示)

使用的示例:

[Closed]
public class BaseAccountController : Controller
{
    ...
}

您可以阅读更多内容(如果需要)关于此处的自定义操作筛选器-

如果
BaseAccountController
只有登录操作,那么您可以将其标记为
abstract

如果
BaseAccountController
只有登录操作,那么您可以将其标记为
abstract

这不意味着我必须在所有源代码中实现它吗控制器?实现什么?你是说登录操作?不需要!你可以有一个虚拟的impl。很抱歉,我没有遵循MSDN中的“标记为抽象的成员,或包含在抽象类中的成员,必须由派生自抽象类的类实现。”这不是我想要做的。我想他指的是将类标记为抽象,而不是操作。来自MSDN:“抽象类可能包含抽象方法和访问器。”您仍然可以包含方法的默认实现,抽象修饰符只是阻止基类被实例化。这不意味着我必须在所有派生控制器中实现它吗?实现什么?你是说登录操作?不需要!你可以有一个虚拟的impl。很抱歉,我没有遵循MSDN中的“标记为抽象的成员,或包含在抽象类中的成员,必须由派生自抽象类的类实现。”这不是我想要做的。我想他指的是将类标记为抽象,而不是操作。来自MSDN:“抽象类可能包含抽象方法和访问器。”您仍然可以包含方法的默认实现,抽象修饰符只是阻止基类被实例化。此关闭属性仅适用于类。。我有类似的要求。除了我的基本控制器还有许多其他动作。。我想直接停止对操作“A”的访问,但继承的控制器可以通过其url进行访问。。我尝试过你的方法,但被告知AttributeUsage仅适用于类此闭合属性仅适用于类。。我有类似的要求。除了我的基本控制器还有许多其他动作。。我想直接停止对操作“A”的访问,但继承的控制器可以通过其url进行访问。。我已经尝试过你的方法,但听说AttributeUsage只适用于课堂