2017-09-04 4 views
0

Dans une application Web Core 1.1 fonctionnelle, j'ai renommé un contrôleur. L'URL du contrôleur est appelé à partir d'un popover bootstrap dans l'extrait de code:Renommer le contrôleur dans le noyau 1.1 entraîne l'erreur 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; 

Le nom du contrôleur d'origine était ProductMixSS et a fonctionné comme prévu. Afin de suivre les conventions de nommage MS, je l'ai renommé en ProductMixController. Le résultat a été une erreur 404 cohérente. Le contrôleur et le code du modèle sont inchangés, tous les caches ont été effacés - ceux dont je suis au courant, même NuGet - ont été vérifiés et revus, les fichiers de configuration ont été vérifiés, les numéros de port ont été modifiés et même la boîte a été redémarré.

J'ai vu quelques références à ce « bug », mais ne semblent pas aborder le même problème que je vois.

Donc WTF.

Répondre

0

Le problème est que, en vertu des règles et règlements MVC de longue date une classe de contrôleur doit avoir le suffixe « Controller » dans son nom à la route à l'action du même nom. Si vous ne suivez pas cette convention en codant votre propre itinéraire, vous rencontrerez le même problème. .Net Core a un peu relâché ce reg et il est maintenant possible de placer le modèle, le contrôleur, voir les fichiers comme désiré. Cependant, il semble que l'ajout du suffixe "Controller" dans le nom de la classe suit toujours la compilation et le chemin d'exécution MVC d'origine.

Wow. C'était un exercice de deux jours dans befuddlement.

+0

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