2016-08-16 136 views
0

我對其中包含2個控制器具有相同的名稱在不同的命名空間AJAX + ASP MVC Ambigous控制器

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

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

我需要通過AJAX來發送文件的TestController就業命名空間項目工作

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

請求後,我收到錯誤500,應用程序找到兩個同名的控制器。有沒有可能將正確的名稱空間放入ajax請求中?

+1

如果它是一個區域下,你不應該在URL中包含的區域名稱(按照默認區域路線註冊)? – Shyju

回答

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); 
      } 
     }); 

或事件更好,如果你可以注入剃刀語法:

 $.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

最好的「類型安全」方法(當與重構等結合使用時 - 我使用它非常鬆散,因爲它不會產生編譯器錯誤;只是幫助重構工具)絕對是'@ Url.Action()'方法。另外,請注意封閉的'''標記,因爲這需要在JS中呈現爲字符串 –