![](/img/trans.png)
[英]ASP.NET MVC 2 - How to override an annotation for a single controller action?
[英]How to override an action in mvc controller?
如何覆盖控制器中的操作方法? 任何人都可以用一个小例子来解释。 还有一件事要问,我们可以在没有 virtual 关键字的情况下做到这一点吗?
就我理解你的问题而言,这些是答案:
第一个答案:
不可能有两个具有相同名称但结果不同的控制器操作:
例如:
ActionResult YourAction() { ... }
FileContentResult YourAction() { ... }
在 MVC 中,您也可以这样做:
[HttpGet]
[ActionName("AnyAction")]
ActionResult YourAction(firstModel model1) { ... }
[HttpPost]
[ActionName("AnyAction")]
FileContentResult YourAction(secondModel model1) { ... }
这里的主要思想是您可以使用 ActionNameAttribute 来命名多个具有相同名称的操作方法。
-------------------------------------------------- - - - - - - - 或者 - - - - - - - - - - - - - - - - - - ---------------------------
第二个答案:
[NonAction]
public override ActionResult YourAction(FormCollection form)
{
// do nothing or throw exception
}
[HttpPost]
public ActionResult YourAction(FormCollection form)
{
// your implementation
}
您可以像在 mvc 解决方案中使用过滤器时过滤器将如何挂钩到它来执行此操作
public override void OnActionExecuting(ActionExecutingContext context)
{
if (Request.Headers.TryGetValue("api-key", out var value))
{
///
}
base.OnActionExecuting(context);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.