【原创】关于MVC自己新建的 action,Controller提示找不到页面的问题
2014-12-22 17:26
134 查看
一.实例:
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文件夹里查找。
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文件夹里查找。
相关文章推荐
- 关于struts开发中action跳转找不到页面的问题
- 关于OWA页面下登录提示找不到邮箱问题
- MVC 调试页面路径变成 Views/Controller/Action.cshtml问题
- 关于struts2获取action中提示消息在jsp页面乱码的问题
- 关于本站提供的Windows 7下硬盘安装xp提示找不到路径问题的原因及解决办法
- MVC的Controller-Action布局:单独的创建/编辑页面还是创建/编辑/查看一体的页面?
- 页面中使用已经引入的jquery插件,结果却提示JS报错找不到函数【问题解决】
- 【原创】关于转载文章提示包含被禁用URL的问题
- 关于FriendlyARM--Smart210--Android4.0.3设备在为windows 7下使用ADB命令提示找不到设备的问题
- 关于MPlayer在播放时提示找不到/dev/dsp问题
- 关于MVC中返回JSON格式数据提示下载的问题
- 关于eclipse+struts action找不到问题解决方法 There is no Action mapped for namespace
- adt-bundle-linux-x86_64-20131030下新建工程提示找不到adb和R.java问题的解决
- MVC的Controller-Action布局:单独的创建/编辑页面还是创建/编辑/查看一体的页面?
- 关于php中数据提交到当前页面action的问题
- 关于MVC从View向Controller传值的问题
- 关于Hadoop数据块Miss在页面提示的问题
- MVC的Controller-Action布局:单独的创建/编辑页面还是创建/编辑/查看一体的页面?
- MVC的Controller-Action布局:单独的创建/编辑页面还是创建/编辑/查看一体的页面?
- 在action中,数据添加、修改成功后,向页面显示提示信息,包括可能出现的问题。