在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中 大家可以搜尋一下這個變數,我簡單說明一下,這個變數就是設定了資源訪問路徑,當然也包括打包...