在Asp.Net MVC中使用NonAction修饰的私有方法和动作之间的区别

Par*_*rma 10 asp.net-mvc private

在Asp.Net MVC中,如果我使用属性修饰一个动作方法,NonAction那么访问该站点的用户将不允许它被调用.我做的时候会发生同样的事情private

那么两者之间的区别是NonAction什么?是否有一个特殊的目的是为了制造哪个属性?

例如,它们之间的区别是什么

[NonAction]
public ActionResult SomeAction(){}
Run Code Online (Sandbox Code Playgroud)

private ActionResult SomeAction(){}
Run Code Online (Sandbox Code Playgroud)

在asp.net MVC的上下文当然我知道一个是public另一个是private

Guf*_*ffa 8

这是唯一的区别.当您希望某个方法具有可使其成为操作的签名但您不希望成为操作时,将使用该属性.

用于此的示例是动作方法调用以生成ActionResult它们的方法:

[NonAction]
public JsonResult JsonInfo(string id, string value) {
  return Json(new { id = id, value = value });
}

public JsonResult GetBusInfo() {
  return JsonInfo("4", "Bus");
}

public JsonResult GetCarInfo() {
  return JsonInfo("8", "Car");
}
Run Code Online (Sandbox Code Playgroud)

将其公开而不是私有的原因是其他控制器中的操作也可以使用它.

  • @ mipe34:通过创建控制器的实例并调用该方法. (3认同)
  • 其他控制器如何使用标记为“NonAction”的“public”方法? (2认同)