MVC专题 专题
您的位置:csharp > MVC专题专题 > ASP.Net MVC控制器
ASP.Net MVC控制器
作者:--    发布时间:2019-11-19

控制器本质上是asp.net mvc应用程序的中心单元。 它是第一个请求接收者,与传入的http请求进行交互。 因此,控制器决定选择哪个模型,然后从模型中获取数据,并将其传递给相应的视图,然后渲染视图。 实际上,控制器正在控制应用程序的整体流程,并输出正确的输出。

控制器是继承自system.web.mvc.controller的 c# 类,它是内置的控制器基类。 控制器中的每个公共方法都称为一个操作方法,这意味着您可以通过某个url从web调用它来执行操作。

mvc约定是将控制器放置在visual studio 在项目设置时创建的文件夹(controllers)中。

我们来看一个简单的控制器例子,通过创建一个新的asp.net mvc项目。

第1步 - 打开visual studio,然后单击菜单:文件 -> 新建 -> 项目 选项。一个新的项目对话框打开。
第2步 - 在左侧窗格中,选择模板:visual c# -> web
第3步 - 在中间窗格中,选择“asp.net web应用程序” 。如下图所示 -

第4步 - 在名称字段中输入项目名称:mvccontrollerdemo,然后单击确定 继续。 您将看到以下对话框,要求为asp.net项目设置初始内容。

第5步 - 为了简单起见,选择 选项,并在“为以下项添加文件夹和核心引用”部分选中mvc复选框,然后单击【确定】。

它将使用最少的预定义内容创建一个基本的mvc项目。

当visual studio项目创建以后,在“解决方案资源管理器” 窗口中看到许多文件和文件夹。

由于这里从一个空的项目模板中创建了asp.net mvc项目,因此目前应用程序不包含任何要运行的东西。

第6步 - 通过在解决方案资源管理器 中右键单击controllers文件夹来添加一个:employeecontroller。选择:添加 -> 控制器 。如下所示 -

它将显示“添加基架” 对话框。如下所示 -

第7步 - 选择mvc 5控制器 - 空 选项,然后单击“添加” 按钮。添加控制器对话框将出现。
第8步 - 将名称设置为:employeecontroller ,然后单击“添加” 按钮。如下所示 -

controllers 文件夹中看到一个新的 c# 文件 -employeecontroller.cs,在visual studio中打开并进行编辑。默认代码如下所示 -

自定义路由规则

现在,在这个应用程序中,我们将使用默认路由为employeecontroller控制器,这需要添加一个自定义的路由。请参考以下步骤实现 -

第1步 - 转到“app_start”文件夹下的 routeconfig.cs 文件,并添加以下路由。

routes.maproute(
   "employee", "employee/{name}", new{
      controller = "employee", action = "search", name =
      urlparameter.optional });

以下是routeconfig.cs 文件的完整实现。参考以下代码 -

using system;
using system.collections.generic;
using system.linq;

using system.web;
using system.web.mvc;
using system.web.routing;

namespace mvccontrollerdemo {
   public class routeconfig {
      public static void registerroutes(routecollection routes){
         routes.ignoreroute("{resource}.axd/{*pathinfo}");
         routes.maproute(
            "employee", "employee/{name}", new{
               controller = "employee", action = "search", name = urlparameter.optional });

         routes.maproute(
            name: "default", url: "{controller}/{action}/{id}", defaults: new{
               controller = "home", action = "index", id = urlparameter.optional });
      }
   }
}

考虑一个场景,其中任何用户来到并搜索雇员,指定url为employee/maxsu。 在这种情况下,maxsu将被视为参数名称,而不是操作的方法。所以在这种情况下,默认路由将不会工作显示。

当参数传递时,要从浏览器获取传入值,mvc框架提供了一个简单的方法来解决这个问题。它是通过使用操作方法内部的参数。

第2步 - 使用以下代码更改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);
        }
    }
}

如果将一个参数添加到操作方法中,则mvc框架将查找与参数名称匹配的值。它将应用所有可能的组合来找出参数值。它将搜索路由数据,查询字符串等

因此,如果请求:/employee/maxsu,那么mvc框架将决定需要一个带有userinput的参数,然后maxsu会从url中挑选出来并自动传递。

server.htmlencode将简单地转换任何形式的纯文本恶意脚本。当上面的代码被编译并执行并请求以下url:http://localhost:51066/employee/maxsu时,将得到以下输出。参考下图所示 -

正如你在上面的屏幕截图中看到的,maxsu是从url中选取的。


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册