2011-08-21 88 views
0

我必須列出Global.asax.cs文件中的所有控制器功能嗎?我是否必須列出所有控制器功能?

我爲我的鍛鍊創建一個API,並創建了控制器WorkoutController。它具有AddWorkout動作,它需要一些參數,例如用戶名,密碼,持續時間和類型。首先是兩個字符串,最後兩個是整數。

現在,我需要爲它創建一個路線嗎?而每個動作都有不同的動作簽名?爲什麼它不在默認路線下?調用它會打破,如果我不提供正確的變量,但我知道我在做什麼:D

routes.MapRoute(
       "AddWorkout", // Route name 
       "Workout/AddWorkout/", // URL with parameters 
       new { controller = "Workout", action = "AddWorkout" } // Parameter defaults 
      ); 

??? :D ???

回答

1

您可以輕鬆創建一個REST API:

routes.MapRoute(
    "Workout", // Route name 
    "{controller}/{action}", // URL with parameters 
    new { controller = "Home", action = "Index" } // Parameter defaults 
); 

,並使用例如你鍛鍊的:

public class WorkoutController : Controller 
{ 
    public ActionResult Index() 
    { 
     return RedirectToAction("Index", "Help"); 
    } 

    [HttpPost] 
    public ActionResult Workout(FormCollection form) 
    { 
     // HTTP POST: ADD Workout 

     // process form and return JSON 
     return Json(myObject); 
    } 

    [HttpDelete] 
    public ActionResult Workout(string id) 
    { 
     // HTTP DELETE: REMOVE Workout 

     // process form and return JSON 
     return Json(myObject); 
    } 

    [HttpGet] 
    public ActionResult Workout(string id) 
    { 
     // HTTP GET: GET Workout 

     // process form and return JSON 
     return Json(myObject); 
    } 
} 

但我建議你雖然使用WCF: )

從cl ient方:

$.ajax({ 
    type: "POST", 
    url: "/Workout/Workout", 
    data: { 
      'type': '123456', 
      'height': '171' 
     } 
    success: function(msg){ 
    alert("Data Saved: " + msg); 
    } 
}); 


$.ajax({ 
    type: "DELETE", 
    url: "/Workout/Workout", 
    data: { 'id': '123456' } 
    success: function(msg){ 
    alert("Data Saved: " + msg); 
    } 
}); 


$.get("/Workout/Workout", { 'id': '123456' }, function(msg){ 
    alert("Data Saved: " + msg); 
    }); 

記住創建一個登錄方法,你會發送在所有的行動需要token,讓你知道用戶操縱你的數據是real

0

閱讀this

上Route類的「URL」屬性定義URL匹配規則 應該用於如果路由規則適用於一個特定 傳入請求進行評估。

0

不,你不必這樣做。默認路由查看定義了哪些方法,只要您的參數與控制器上的某些方法對齊,就會找出要調用的內容。

相關問題