zoukankan      html  css  js  c++  java
  • MVC几种找不到资源的解决方式

    在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)]

    四:这是我今天遇到的找半天没找到原因,最后看http://www.cnblogs.com/xyang/archive/2011/11/24/2262003.html才发现的

    备注,感谢http://www.cnblogs.com/xyang/archive/2011/11/24/2262003.html提供的解决办法

  • 相关阅读:
    算法竞赛进阶指南 0.1
    补题 : 过分的谜题
    矩阵快速幂【模板】
    10774: matrix
    火车进出栈问题 【求卡特兰数】
    [最小割]StoerWagner算法
    安装、使用sklearn
    [线段树]跳蚤
    [树形dp][换根]Maximum White Subtree
    [组合数学]Many Many Paths
  • 原文地址:https://www.cnblogs.com/stubborn-donkey/p/7676646.html
Copyright © 2011-2022 走看看