有谁能告诉我为什么要使用NonAction属性吗?我的意思是说,我有一个表单有几个提交值:更新、删除或插入.由于所有提交按钮都有相同的共同形式,我在控制器内切换提交值,并相应地采取行动.

如下所示:

public ActionResult asd(string submitButton){
     switch(submitButton){
         case "Insert":
             return Insert();
         // bla bla bla
     }
}

[NonAction]
public ActionResult Insert(){
    // some code inside here
    return View();
}

再一次,我为什么要使用非动作而不是这样的东西:

public void Insert(){
    // some code inside here
}

推荐答案

可以省略NonAction属性,但该方法仍然可以作为action方法调用.

从MSDN站点(ref):

默认情况下,MVC框架将控制器类的所有公共方法视为操作方法.如果您的控制器类包含一个公共方法,而您不希望它是一个操作方法,则必须使用NoActionAttribute属性标记该方法.

Asp.net相关问答推荐

将 Response.Headers.Add 替换为方法属性decorator

检测 ASP.NET 中的内存泄漏

ReportViewer 控件 - 高度问题

某些黑客能否从用户那里窃取 Web 浏览器 cookie 并在网站上使用该名称登录?

异步编程与线程有什么不同?

防止 asp.net Web 表单中的跨站点请求伪造 (csrf) 攻击

Request.Params 和 Request.Form 什么时候不同?

我可以创建 .config 文件并将其包含到 web.config 中吗?

UseSqlServer 方法缺少 MVC 6

如何使用 ASP.Net MVC 路由来路由图像?

无法复制文件.访问路径被拒绝

IIS 中的 existingResponse="PassThrough" 是什么意思?

在asp.net mvc 3中实现FilterAttribute,IActionFilter和从ActionFilterAttribute继承有什么区别?

使用 Moq 验证活动注册

如何在 ASP.Net 的客户端 (JavaScript) 上判断 Page.Validate()?

如何获取正在访问 ASP.NET 应用程序的当前用户?

将新行添加到数据表的顶部

模型是否包含字段而不将其添加到数据库中?

路由模板分隔符/不能连续出现 - 属性路由问题

盒式磁带包与 MVC4 包