猿教程 Logo

MVC 操作方法(Action方法)

在本节中,您将了解控制器类的操作方法。

Controller类的所有公共方法都称为Action方法。 它们与任何其他具有以下限制的正常方法一样:

  1. 操作方法必须为public。 它不能是私有的或受保护的

  2. 操作方法不能重载

  3. Action方法不能是静态方法。

下面是StudentController的Index操作方法的一个例子


如上图所示,Index方法是一个公共方法,它使用View()方法返回ActionResult。 View()方法在Controller基类中定义,它返回适当的ActionResult。


默认操作方法:

每个控制器可以具有默认操作方法,如RouteConfig类中的已配置路由。 默认情况下,Index是任何控制器的默认动作方法,配置的默认根目录如下所示。

相关实例:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}/{name}",
    defaults: new { controller = "Home", 
                    action = "Index", 
                    id = UrlParameter.Optional
            });

但是,您可以根据RouteConfig类中的要求更改默认操作名称。


ActionResult:

MVC框架包括各种结果类,它们可以从动作方法返回。 结果类表示不同类型的响应,例如html,file,string,json,javascript等。下表列出了ASP.NET MVC中可用的所有结果类。

结果类描述
ViewResult表示HTML和标记。
EmptyResult表示无响应。
ContentResult表示字符串文字。
FileContentResult / FilePathResult / FileStreamResult表示文件的内容
JavaScriptResult表示JavaScript脚本。
JsonResult表示可在AJAX中使用的JSON
RedirectResult表示重定向到新的URL
RedirectToRouteResult表示同一个或其他控制器的另一个Action
PartialViewResult从部分视图返回HTML
HttpUnauthorizedResult返回HTTP 403状态

ActionResult类是所有上述结果类的基类,因此它可以是Action方法的返回类型,它返回上面列出的任何类型的结果。 但是,您可以指定适当的结果类作为操作方法的返回类型。

上图中的StudentController的Index()方法使用View()方法返回ViewResult(它来自ActionResult)。 View()方法在基本的Controller类中定义。 它还包含不同的方法,它们自动返回特定类型的结果,如下表所示。

结果类型描述Base Controller方法
ViewResult表示HTML和标记。View()
EmptyResult表示无响应。
ContentResult表示字符串文字。Content()
JavaScriptResult表示JavaScript脚本。JavaScript()
JsonResult表示可在AJAX中使用的JSONJson()
RedirectResult表示重定向到新的URLRedirect()
RedirectToRouteResult表示同一个或其他控制器的另一个动作RedirectToRoute()
PartialViewResult返回HTMLPartialView()
HttpUnauthorizedResult返回HTTP 403状态

FileContentResult,

FilePathResult,

FileStreamResult

表示文件的内容File()

从上表中可以看出,View方法返回ViewResult,Content方法返回string,File方法返回文件的内容等等。 使用上表中提到的不同方法,从操作方法返回不同类型的结果。


操作方法参数:

每个操作方法都可以有输入参数,就像其他普通方法一样。 它可以是原始数据类型或复杂类型参数,如下面的示例所示。

相关实例:

[HttpPost]
public ActionResult Edit(Student std)
{
    // update student to the database
    
    return RedirectToAction("Index");
}

[HttpDelete]
public ActionResult Delete(int id)
{
    // delete student from the database whose id matches with specified id

    return RedirectToAction("Index");
}

默认情况下,action方法参数的值从请求的数据集合中检索。 数据收集包括表单数据或查询字符串值或cookie值的名称/值对。 ASP.NET MVC中的模型绑定会自动将URL查询字符串或表单数据集合映射到action方法参数(如果两个名称都匹配)。 

要点
  1. Controller类中的所有公共方法都称为Action方法。 

  2. 操作方法具有以下限制。  - 操作方法必须是公共的。 它不能是私有的或受保护的。  - 操作方法不能重载。  - 操作方法不能是静态方法。 

  3. ActionResult是从Action方法返回的所有结果类型的基类。 

  4. Controller基础类包含返回适当结果类型的方法。 View(),Content(),File(),JavaScript()等。

  5. Action方法可以包括Nullable类型参数。

在下一部分中了解操作选择器。


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/mvc/mvc-action-method.html