2016-08-16 2 views
0

ich auf Projekt arbeiten, die in einem anderen Namensraum 2 Controller mit demselben Namen enthältAjax + ASP MVC mehrdeutig Controller

Web.Mvc.Areas.Company.Controllers 
{ 
    public class TestController {} 
} 

Web.Mvc.Areas.Employment.Controllers 
{ 
    public class TestController {} 
} 

Ich brauche

die Datei von Ajax zu Testcontroller in Beschäftigung Namespace senden
$.ajax({ 
           url: 'Test/UploadFiles', 
           type: "POST", 
           contentType: false, 
           processData: false, 
           data: fileData, 
           success: function(result) { 
            alert(result); 
           }, 
           error: function(err) { 
            alert(err.statusText); 
           } 
          }); 

Ich bekomme Fehler 500 nach Anfrage, App gefunden zwei Controller mit dem gleichen Namen. Gibt es eine Möglichkeit, den richtigen Namespace in eine Ajax-Anfrage zu stellen?

+1

verwenden könnten, wenn sie unter einem Bereich sind, sollte man nicht die Bereichsnamen in der URL enthalten (gemäß der Standard-Route Registrierung)? – Shyju

Antwort

4
 $.ajax({ 
      url: '/Employment/Test/UploadFiles', 
      type: "POST", 
      contentType: false, 
      processData: false, 
      data: fileData, 
      success: function(result) { 
       alert(result); 
      }, 
      error: function(err) { 
       alert(err.statusText); 
      } 
     }); 

oder Ereignis besser, wenn Sie Razor-Syntax injizieren:

 $.ajax({ 
      url: '@Url.Action("UploadFiles", "Test", new {area = "Employment"})', 
      type: "POST", 
      contentType: false, 
      processData: false, 
      data: fileData, 
      success: function(result) { 
       alert(result); 
      }, 
      error: function(err) { 
       alert(err.statusText); 
      } 
     }); 
+0

Der beste "typsichere" Weg (wenn er mit Refactoring usw. verbunden ist - ich benutze ihn locker, da er keine Compilerfehler erzeugt; hilft nur bei Refactoring-Tools) ist definitiv die "@ Url.Action()" Methode . Beachten Sie auch die umschließenden '' '- Zeichen, da diese als String im JS gerendert werden müssen –