我是否必须列出所有控制器功能?

时间:2011-08-21 18:40:41

标签: asp.net-mvc-3

我是否必须列出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 ???

3 个答案:

答案 0 :(得分: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:)

从客户端:

$.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。< / p>

答案 1 :(得分:0)

阅读this

  

Route类的“Url”属性定义了Url匹配规则   应该用来评估路由规则是否适用于   特殊的传入请求。

答案 2 :(得分:0)

不,你根本不需要这样做。默认路由查看定义了哪些方法,并且只要您的参数与控制器上的某些方法对齐,就会找出要调用的内容。