2015-11-11 24 views
1

我真的想要你的選擇。 我們使用web api 2將這個.net MVC 3項目更新爲MVC 4,這是一項Web服務。 ajax調用來自Android機器與Devextreme/Phonegap。MVC 4 Web API 2 ajax調用所有參數可選

更新後,當我打電話登錄Android電子網絡服務我得到 「沒有HTTP資源發現匹配的請求URI‘http://www.whatever.gr/MVCService/Actions/Login’」

我想設置路由,這樣的所有方法MVC服務可以有參數可選。 我不能得到這個工作..

我們不能改變在Android應用程式的來源,Ajax調用低於

function doLogin(username, password, callback) { 
    loading(true); 

    var dataStr = "uid=" + uid + "&username=" + username + "&password=" + password; 
    var success = false; 
    var token = ""; 
    $.ajax({ 
     type: "POST", 
     url: registrationServiceUrl + 'Login', 
     data: dataStr, 
     beforeSend: function() { 
      //alert("registration no: " + registrationid); 
     }, 
     success: function (retval) { 
      if (retval.indexOf('SUCCESS') == 0) { 
       success = true; 
       token = retval.substring(8); 
       //setTokenToSettings(token); 
      } else { 
       success = false; 
      }; 
      callback(success, token); 
      loading(false); 

     }, 
     error: function (retval) { 
      callback(success, token); 
      loading(false); 

     } 
    }); 
} 

MVC中的路線是

public static void Register(HttpConfiguration config) 
      { 
       // Web API configuration and services 

       // Web API routes 
       //config.MapHttpAttributeRoutes(); 

       config.Routes.MapHttpRoute(
        name: "DefaultApi", 
        routeTemplate: "api/{controller}/{id}", 
        defaults: new { id = RouteParameter.Optional } 
       ); 

       config.Routes.MapHttpRoute(
        name: "ActionApi", 
        routeTemplate: "api/{controller}/{action}/{id}", 
        defaults: new { id = RouteParameter.Optional } 
       ); 
      } 
代碼

當我在瀏覽器中的參數如下所示時,我有一個響應 'http://www.whatever.gr/MVCService/Actions/Login?param1=1&param=2&param3=3'。

我想要的行爲,什麼時候打「http://www.whatever.gr/MVCService/Actions/Login」 或 「http://www.whatever.gr/MVCService/Actions/Login?param1=1&param=2&param3=3&invalidParamName=x」。

並且web服務方法以空參數值觸發。

但是,如果沒有在方法

public string Login(string pamar1 = "",string param2 = "", string param3 = "") 

隨着MVC 3設置可選參數,正如我前面解釋了這是工作的罰款。

在此先感謝您的時間。

+0

嗨,我不認爲這是什麼做的客戶端應用程序。前段時間我也有同樣的問題。請看看這篇文章http://stackoverflow.com/questions/19093603/simple-post-to-web-api/19094245#19094245,也看到它在這個問題背後的原因http://stackoverflow.com /問題/ 19424493 /爲什麼 - 不-ASP網的Web-API允許僅此一個參數換法後 – Amila

+0

我已經試過[HTTPGET(),HttpPost()] 公共JsonResult 登錄([ FromBody]串UID,[FromBody]用戶名字符串,[FromBody]字符串密碼),但我得到時發生錯誤 – Dimitrios

+0

我覺得這是Ajax調用數據:dataStr $阿賈克斯({ 類型: 「POST」, 網址: registrationServiceUrl +「登陸」, 數據:dataStr, 但它是如何工作的MVC 3 ?? – Dimitrios

回答