2017-09-04 45 views
0

在工作的Core 1.1 Web應用程序中,我重命名了一個控制器。控制器的網址是從該代碼段的引導酥料餅調用:核心1.1中的控制器重命名導致404錯誤

$('.main-select').on('shown.bs.popover', function() { 
     $('.submit').click(function() { 
      var fromval = $('.popover #fromvalue').val(); 
      var toval = $('.popover #tovalue').val(); 
      var option = { 
       url: "/ProductMixController/GetDateData?dStart=" + fromval + "&" + "dEnd=" + toval, 
       data: JSON.stringify({ dStart: fromval, dEnd: toval }), 
       method: 'post', 
       dataType: 'json', 
       contentType: 'application/json;charset=utf-8' 
      }; 

      window.location.href = option.url; 

原來的控制器的名字是ProductMixSS和預期工作。爲了遵循MS命名約定,我將其重命名爲ProductMixController。結果是一致的404錯誤。控制器和模型代碼保持不變,所有緩存已被清除 - 我知道的那些,甚至NuGet - 拼寫已經被檢查和雙重檢查,配置文件已被檢查,端口號已被更改,甚至框已被重新啓動。

我見過這個'bug'的一些引用,但似乎沒有解決我看到的同樣的問題。

所以WTF。

回答

0

問題在於,在長期的MVC規則和規定下,控制器類需要在其名稱中具有「控制器」後綴以路由到類似命名的操作。如果你沒有按照這個慣例編寫你自己的路由,你將遇到同樣的問題。 .Net Core已經稍微放寬了這一章,現在可以根據需要放置模型,控制器,視圖文件。然而,似乎把類名稱中的「Controller」後綴仍然遵循原始的MVC編譯和執行路徑。

哇。這是一個爲期兩天的練習。

+0

更多:https://www.red-gate.com/simple-talk/dotnet/asp-net/control-controller-asp-net-mvc/ – Maris

相關問題