MVC几种找不到资源的问题解决办法

转自:http://www.cnblogs.com/xyang/archive/2011/11/24/2262003.html

在MVC中,controller中的Action和View中的.cshtml文件名称有一个对应的关系。

当不对应时,有以下几种情况发生:

一、找不到视图的错误

请求URL:http://localhost:13850/Customer/Create

controller中有对应的Action:

View中没有相应的视图

报错信息:

解决方式:在View中添加相应的View

二、找不到资源:

请求的URL:http://localhost:13850/Customer/Index

controller里没有相应的Action(有时候可能是在开发一段时间以后,修改了Action的名字,却没有相应的修改View的名字,但是请求的URL依然还是原来的导致的)

View里有相应的视图

错误信息:

解决方式,就是指定一个固定的“页”,在找不到资源时显示。具体如下:

Asp.Net MVC中的controller都是集成自Controller这个抽象类,在这个类中,定义了一个HandleUnknownAction 方法,左右就是在发生HTTP 404时,进行处理。

那么,我们可以在自己的controller里重写这个方法。

这样,在每次找不到相应的Action时,都能执行这个方法。去调用相应的View。

微软提供的方式是:

protected override void HandleUnknownAction(string actionName)

{

    try {

        this.View(actionName).ExecuteResult(this.ControllerContext);

      } catch (InvalidOperationException ieox )

      {

         ViewData["error"] = "Unknown Action: \"" +Server.HtmlEncode(actionName) + "\"";

         ViewData["exMessage"] = ieox.Message;

         this.View("Error").ExecuteResult(this.ControllerContext);

      }

}

也就是,输出错误页。

当然这也存在一个隐患,如果出现下面【三】的情况时,也就是只声明了一个HTTP.Post的方法,没有相应的Http.Get的同名方法,也能把通过这种方式,把页面加载出来。

怎么解决呢?答案就是:直接Response.Redirect("/",true),回到首页。

三、找不到资源:

请求URL:http://localhost:13850/Customer/Details

controller中的对应Action,定义为HTTP Post,且没有对应的Http Get的Action

View中有对应的视图

报错信息:

解决方式:加入一个同名Action,定义为HTTP GET:[AcceptVerbs(HttpVerbs.Get)]

MVC几种找不到资源的问题解决办法

时间: 2024-10-12 08:54:35

MVC几种找不到资源的问题解决办法的相关文章

你找的是资源还是资金?

对绝大多数的创业者而言,应该都有过寻找资金的经历,天使投资.VC.PE等,这本身也是一个学习与成长的过程,中国人喜欢吹牛逼,找钱的人吹,有钱的人吹,给钱的人更吹,资本市场很大很复杂,三教九流五花八门琳琅满目眼花潦乱,每见一个投资人或机构应该都会让人学到东西甚至眼前一亮,找钱永远是一件难于上青天的事情,想想无亲无故的,干嘛要给你钱啊,理由是什么?你有什么值钱的可交换?给钱更是难上加难,这世界上可能只有父母给你钱是最爽快最无私的,作为找钱的创业者必须说清楚你有什么有价值的东西?技术.团队.产品.用户

Android Studio三种方式导入外部资源 以及 报错处理

android studio提供了三种方式导入外部资源: 1. Library dependency – 在线添加.需联网下载 2. File dependency – 从本地添加一些jar包(要先将jar包拷贝到项目的libs文件夹下) 3. Module dependency – 从本地添加带有源码的库工程(要先 import Moudle 将库工程导入项目中) 其中第三种方式导入会报一些错误,这里以github上的开源框架android-async-http 为例,给出一种导入的步骤并尝试

System.IO.IOException:“找不到资源“window1.xaml”。” 解决方法

报错:找不到资源“window1.xaml 原因:在编译时使用的是en-US选项进行编译并生成了en-US为名的文件夹,里面包含了可本地化的内容:但是你的本地系统使用的是zh-CN,在你运行 exe的时候,运行时会检查本地culture,发现是zh-CN,于是就去找zh-CN文件夹,但是并没有生成该culture下的资源,所以出错. 解决办法: 直接用记事本打开项目文件.csproj(Visual C# Project file ) 将编译选项由<UICulture>en-US</UIC

WPF 提示错误: IOException: 找不到资源“watermark.png”

本人工作环境 Microsoft Visual Studio Community 2019, Version 16.4.5 按照官网教程 “在 Visual Studio 2019 中创建第一个 WPF 应用程序” 教程走下来时,一直出现 IOException: 找不到资源“watermark.png“ 的错误提示,找了许多答案找不到,最后终于在stack overflow上看到了正确答案,感谢,特地写下来提醒大家. 出现的问题: 按照 右键单击项目节点,然后选择 Add - Existing

Tomcat启动找不到JAVA_HOME另类解决办法

1.解决方法:比较新版本的JDK,比如JDK1.7.安装完JDK不会自动注册环境变量JAVA_HOME,JRE_HOME. 这里有一种简单的方法,就是修改setclasspath.bat文件的方法.原理是Tomcat的startup.bat,它调用了catalina.bat,而catalina.bat调用的是setclasspath.bat文件. 修改如下: rem------------------------------------------------------------------

在IntelliJ IDEA中添加框架支持时找不到Hibernate的解决办法

问题描述 第一次在Add Frameworks support界面中添加hibernate支持的时候,异常中断,导致没有成功添加. 第二次进入Add Frameworks support窗口时,发现找不到hibernate. 解决办法 打开项目根目录下的spring-mvc-crud.iml文件,搜索hibernate找到这段代码并删除,然后重新添加框架支持即可选择hibernate. <facet type="hibernate" name="Hibernate&qu

在 sys.servers 中找不到服务器的解决办法,自己解决的

一开始提示,在服务器中找不到在 sys.servers 中找不到服务器 'QPAccountsDBLink',先用select * from sys.servers  ,发现只能查到一个服务器名称,后来自己电脑里保存了一些链接脚本,只需改几个地方 -- 变量定义DECLARE @DBName VARCHAR(32)DECLARE @DBUser VARCHAR(32)DECLARE @DBPassword VARCHAR(32)DECLARE @DBSourceAddr VARCHAR(32)D

linux上项目报错找不到主机名解决办法

项目报错找不到主机名解决办法 有时候我们的项目在本地运行没问题,但部署到linux服务器上就出错了. 报错:java.net.UnknownHostException: 主机名: 主机名  找不到主机名. 解决方法: 修改服务器上/etc/hosts文件 127.0.0.1  localhost  localhost.localdomain 添加所需的主机名称 或者 127.0.0.1  localhost  localhost.localdomain 127.0.0.1  添加所需的主机名称

OD 内存映射 属主找不到当前程序名解决办法 和 跟随ClassProc 反汇编窗口空白解决办法

OD 内存映射 属主找不到当前程序名解决办法 取消 StrongOD 选项里  高级枚举模块选项就OK了  重启OD 跟随ClassProc  反汇编窗口空白解决办法 StrongOD.dll 是有问题的.网上百度鱼C工作室 用他的StrongOD.dll可以解决这个问题 复制下面的错误图片连接 其实就是好的StrongOD的下载链接 下载下来把jpg改成dll就可以了