MVC幾種找不到資源的解決方式

2021-09-07 19:11:45 字數 1914 閱讀 5426

在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  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幾種找不到資源的問題解決辦法

在mvc中,controller中的action和view中的.cshtml檔名稱有乙個對應的關係。當不對應時,有以下幾種情況發生 一 找不到檢視的錯誤 請求url http localhost 13850 customer create controller中有對應的action view中沒有相...

MVC幾種找不到資源的問題解決辦法

在mvc中,controller中的action和view中的.cshtml檔名稱有乙個對應的關係。當不對應時,有以下幾種情況發生 一 找不到檢視的錯誤 請求url http localhost 13850 customer create controller中有對應的action view中沒有相...

react中build後的專案資源找不到問題

我們在react專案中執行cnpm run build後,打完包生成專案放在伺服器下會報404找不到資源,問題就是喜聞樂見的路徑設定問題了 首先我們看乙個設定在config webpack.config.js中 大家可以搜尋一下這個變數,我簡單說明一下,這個變數就是設定了資源訪問路徑,當然也包括打包...