一.实例:

1.比如我自己新建了一个~/view/Shop  文件夹下的IndexShop.aspx,那么在Controllers文件夹下就要对应一个ShopController.cs的Controller类。

2.而在 Global.asax中就要新建一条:

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

3.也非常重要,就是要在ShopController.cs里面 所有的action方法中将 return View()方法中的参数传递为自己新建的.aspx的字符串,如例子就是传递为

public ActionResult IndexShop()
{
return View("IndexShop");
}

二.原理

(一)定位

1.路由配置:

在MVC中,路由负责确定由哪个控制器操作来处理特定的URL请求。默认的MVC项目添加了一个通用的路由,它使用以下URL习惯来解析特定的URL请求,即分三个部分,包括在大括号内:{Controller}/{action}/{id}

注册路由使用的扩展方法是MapRoute(),在程序启动的时候注册(在App_Start/RouteConfig.cs文件里),例如:

routes.MapRoute(
                                name: "Default",//路由名称
                                url: "{controller}/{action}/{id}",//URL参数
                                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }//默认的URL各个参数值参数值
                            );

1.定位控制器

在ASP.NET MVC中,系统会使用“惯例优先”的原则,当应用程序启动时,ASP.NET MVC会在程序集里查找所有可用的控制器,这些控制器类都继承自System.Web.Mvc.IController接口或者她的子类,并且名字带有”Controller”后缀,当路由器框架确定需要访问的控制器后,它就会去掉后缀,来获取控制器类的名称。所以当需要使用Contrller时,直接使用它去掉”Controller”后缀之后的名字即可,比如AuctionsController指的控制器类是Auctions,而HomeController指的就是”Home”。

2.定位视图

ASP.NET MVC依赖惯例是在网站根目录下面的Views文件夹查找这个视图文件,更确切地说,ASP.NET MVC希望视图文件放在以他们对应的控制器名字命名的文件夹中。

因此,如果MVC框架想为HomeController的Index操作显示视图,那么它就要在/Views/Home文件夹下查找名为Index的文件。如果在Views文件夹没有找到对应Controller名字的文件夹,或者在这个文件夹下面没有找到对应的视图文件,MVC框架就会继续在/Views/Shared文件夹里查找。

【原创】关于MVC自己新建的 action,Controller提示找不到页面的问题的更多相关文章

  1. Spring MVC-控制器(Controller)-多动作控制器(Multi Action Controller)示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_multiactioncontroller.htm 说明:示例基于Spring M ...

  2. adt-bundle-linux-x86_64-20131030下新建project提示找不到adb和R.java问题的解决

    adt-bundle-linux-x86_64-20131030下新建project提示找不到adb和R.java问题的解决 在ubuntu14.04下,搭建Android开发环境,下载官方的adt- ...

  3. [ASP.NET MVC 小牛之路]10 - Controller 和 Action (2)

    继上一篇文章之后,本文将介绍 Controller 和 Action 的一些较高级特性,包括 Controller Factory.Action Invoker 和异步 Controller 等内容. ...

  4. ASP.NET MVC和ASP.NET Core MVC中获取当前URL/Controller/Action (转载)

    ASP.NET MVC 一.获取URL(ASP.NET通用): [1]获取完整url(协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [ ...

  5. C# -- 等待异步操作执行完成的方式 C# -- 使用委托 delegate 执行异步操作 JavaScript -- 原型:prototype的使用 DBHelper类连接数据库 MVC View中获取action、controller、area名称、参数

    C# -- 等待异步操作执行完成的方式 C# -- 等待异步操作执行完成的方式 1. 等待异步操作的完成,代码实现: class Program { static void Main(string[] ...

  6. 创建ASP.NET Core MVC应用程序(1)-添加Controller和View

    创建ASP.NET Core MVC应用程序(1)-添加Controller和View 参考文档:Getting started with ASP.NET Core MVC and Visual St ...

  7. [MVC学习笔记]5.使用Controller来代替Filter完成登录验证(Session校验)

          之前的学习中,在对Session校验完成登录验证时,通常使用Filter来处理,方法类似与前文的错误日志过滤,即新建Filter类继承ActionFilterAttribute类,重写On ...

  8. MVC(Model(模型) View(视图) Controller(控制器))

    复习 1.      商品表 增删改查 index.php  add.php   view.php   edit.php   action.php 2.      MVC(Model(模型)  Vie ...

  9. asp.net mvc @Html.Partial @Html.Action @Html.RenderPartial @Html.RenderAction区别

    转载自 :  <asp.net mvc @Html.Partial @Html.Action @Html.RenderPartial @Html.RenderAction区别> 先复制过来 ...

随机推荐

  1. Android studio优点及快捷键

    alt+回车 提示错误信息 ctrl+shift+回车 补全代码 ctrl+alt+o 导入包 ctrl+p 查看方法的参数 ctrl+alt+t 可以弹出包围结构的代码提示 例如if android ...

  2. 【转】Netty那点事(一)概述

    [原文https://github.com/code4craft/netty-learning/blob/master/posts/ch1-overview.md#%E5%90%88%E5%BC%80 ...

  3. 提高你的Java代码质量吧:少用静态导入

    一.分析  从Java 5开始引入静态导入语法(import static),其目的是为了减少字符输入量,提高代码的可阅读性,以便更好地理解程序. 但是,滥用静态导入会使程序更难阅读,更难维护.静态导 ...

  4. 关于Mysql Can't connect to mysql server on localhost(10061)的问题解决

    这个问题很烦,试了网上很多朋友的方法,还是不行,大家都知道卸载mysql再想装就不那么容易了(虽然我卸载安装无数次都成功了),好了,不废话了, 如果出现这种问题,不要急,找到mysql的安装包  例如 ...

  5. Codeforces Round #268 (Div. 1) A. 24 Game 构造

    A. 24 Game Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/468/problem/A D ...

  6. hdu 5442 Favorite Donut 后缀数组

    Favorite Donut Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid ...

  7. Android 屏幕画笔实现

    Tuya.rar

  8. android131 360 04 手机安全页面

    ## Root权限 ## > 什么是Root权限? Root权限相当于系统管理员权限, 有了root权限,就可以随意修改和删除手机内部的文件. > 一般手机购买之后, 都没有root权限. ...

  9. 四、Socket之UDP异步传输文件-用控件显示文件传输进度

    上一篇文章三.Socket之UDP异步传输文件中,实现了多文件的传输和MD5校验,还显示了文件传输过程中的信息,在这一篇文章中,将介绍怎样实现传输文件的进度显示和实现选择保存文件路径. 首先,来实现一 ...

  10. linux中的工具

    远程连接linux的工具: 命令行: SecureCRT   putty  XShell(商业环境付费) 图形界面:WinSCP SecureFX 远程连接window服务器工具: FileZilla ...