2017-09-04 70 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

相关问题