📜  ASP.NET MVC-操作

📅  最后修改于: 2020-11-21 05:11:58             🧑  作者: Mango


ASP.NET MVC操作方法负责执行请求并生成对此的响应。默认情况下,它以ActionResult的形式生成响应。动作通常具有与用户交互的一对一映射。

例如,在浏览器中输入URL,单击任何特定的链接,然后提交表单,等等。这些用户交互中的每一个都会导致将请求发送到服务器。在每种情况下,请求的URL都包含MVC框架用来调用操作方法的信息。对动作方法的一个限制是它们必须是实例方法,因此它们不能是静态方法。也没有返回值限制。因此,您可以返回字符串,整数等。

要求处理

动作是MVC应用程序中的最终请求目的地,它使用控制器基类。让我们看一下请求处理。

  • 当URL到达时(如/ Home / index),由UrlRoutingModule检查并了解路由表中配置的某些内容知道如何处理该URL。

要求处理

  • UrlRoutingModule将我们在路由表中配置的信息汇总在一起,并将控制权移交给MVC路由处理程序。

  • MVC路由处理程序将控制器传递给作为HTTP处理程序的MvcHandler。

  • MvcHandler使用控制器工厂实例化控制器,并且知道要实例化哪个控制器,因为它在RouteData中查找该控制器值。

  • 一旦MvcHandler有了控制器,MvcHandler唯一了解的就是IController接口,因此它只是告诉控制器执行。

  • 当它告诉控制器执行时,它是从MVC的控制器基类派生的。 Execute方法创建一个动作调用者,并告诉该动作调用者去查找要调用的方法,找到要调用的动作。

  • 动作调用者再次在RouteData中查找并找到从路由引擎传递来的动作参数。

行动类型

动作基本上会返回不同类型的动作结果。 ActionResult类是所有操作结果的基础。以下是不同类型的操作结果及其行为的列表。

Sr.No. Name and Behavior
1

ContentResult

Returns a string

2

FileContentResult

Returns file content

3

FilePathResult

Returns file content

4

FileStreamResult

Returns file content

5

EmptyResult

Returns nothing

6

JavaScriptResult

Returns script for execution

7

JsonResult

Returns JSON formatted data

8

RedirectToResult

Redirects to the specified URL

9

HttpUnauthorizedResult

Returns 403 HTTP Status code

10

RedirectToRouteResult

Redirects to different action/different controller action

11

ViewResult

Received as a response for view engine

12

PartialViewResult

Received as a response for view engine

我们来看上一章中创建了EmployeeController的简单示例。

using System;
using System.Collections.Generic;
using System.Linq;

using System.Web;
using System.Web.Mvc;

namespace MVCControllerDemo.Controllers {
   public class EmployeeController : Controller{
      // GET: Employee
      public ActionResult Search(string name){
         var input = Server.HtmlEncode(name);
         return Content(input);
      }
   }
}

当您请求以下URL http:// localhost:61465 / Employee / Mark时,您将收到以下输出作为操作。

Localhost员工评分输出

添加控制器

让我们添加另一个控制器。

步骤1-右键单击Controllers文件夹,然后选择添加→控制器。

添加另一个控制器

它将显示“添加支架”对话框。

添加脚手架对话框

步骤2-选择“ MVC 5控制器-空”选项,然后单击“添加”按钮。

出现“添加控制器”对话框。

客户控制器

步骤3-将名称设置为CustomerController,然后单击“添加”按钮。

现在,您将在Controllers文件夹中看到一个新的C#文件“ CustomerController.cs”,该文件也可以在Visual Studio中进行编辑。

set_name CustomerController

同样,再添加一个名称为HomeController的控制器。以下是HomeController.cs类的实现。

using System;
using System.Collections.Generic;
using System.Linq;

using System.Web;
using System.Web.Mvc;

namespace MVCControllerDemo.Controllers {
   public class HomeController : Controller{
      // GET: Home
      public string Index(){
         return "This is Home Controller";
      }
   }
}

步骤4-运行此应用程序,您将收到以下输出。

家庭控制器输出

步骤5-在上面创建的客户控制器中添加以下代码。

public string GetAllCustomers(){
   return @"
  • Ali Raza
  • Mark Upston
  • Allan Bommer
  • Greg Jerry
"; }

步骤6-运行此应用程序,并请求http:// localhost:61465 / Customer / GetAllCustomers 。您将看到以下输出。

本地主机GetAllCustomers

您还可以重定向到同一控制器甚至其他控制器的操作。

以下是一个简单的示例,其中我们将通过使用以下代码更改HomeController中的代码来从HomeController重定向到Customer Controller。

using System;
using System.Collections.Generic;
using System.Linq;

using System.Web;
using System.Web.Mvc;

namespace MVCControllerDemo.Controllers{
   public class HomeController : Controller{
      // GET: Home
      public ActionResult Index(){
         return RedirectToAction("GetAllCustomers","Customer");
      }
   }
}

如您所见,我们使用了RedirectToAction()方法ActionResult,该方法带有两个参数,动作名称和控制器名称。

运行此应用程序时,您会看到默认路由会将其重定向到/ Customer / GetAllCustomers

Localhost客户GetAllCustomers