当我们想要在控制器中使用公共方法但又不想将其视为操作方法时,可以使用 nonaction 属性。操作方法是控制器中的公共方法,可以使用 url 调用。因此,默认情况下,如果控制器中有任何公共方法,则可以使用 url 请求来调用它。要限制对控制器中公共方法的访问,可以使用 nonaction 属性。
现在让我们考虑 HomeController 有两个公共方法 MyMethod1 和 MyMethod2.
控制器
示例
using System.Web.Mvc;
namespace DemoMvcApplication.Controllers{
public class HomeController : Controller{
public string MyMethod1(){
return "My Method 1 Invoked
";
}
public string MyMethod2(){
return "My Method 2 Invoked
";
}
}
}让我们使用以下 URL 调用 HomeController 中的这两个方法。
http://localhost:59146/Home/MyMethod1
http://localhost:59146/Home/MyMethod2


假设 MyMethod2 用于某些内部目的,我们不希望调用它 使用 URL 请求。为了实现这一点,我们必须用 NonAction 来装饰它 属性。
控制器
示例
using System.Web.Mvc;
namespace DemoMvcApplication.Controllers{
public class HomeController : Controller{
public string MyMethod1(){
return "My Method 1 Invoked
";
}
[NonAction]
public string MyMethod2(){
return "My Method 2 Invoked
";
}
}
}下面是使 MyMethod2 非操作的输出。
输出











