如何在ASP.NET MVC 3.0中创建RESTFul控制器操作?

时间:2012-02-15 13:16:57

标签: asp.net-mvc rest asp.net-mvc-routing

我在我的家庭控制器中创建了一个Action,它接受一个文本:

 public class HomeController : Controller
    {
       public string DisplayText(string text)
        {
            return text;
        }
    }

我可以使用以下url调用此Action,方法是将text参数作为查询字符串传递:

http://localhost:4574/Home/DisplayText?text=some text

但是,我希望能够使用以下样式调用它:

http://localhost:4574/Home/DisplayText/some text

因此,未指定参数名称(“text”);

怎么可能?

另一个更清楚解释的例子如下:

public string Add(string a, string b)
        {
            return (int.Parse(a) + int.Parse(b)).ToString();
        }

我可以使用:

来调用它
http://localhost:4574/Home/Add?a=2&b=3

但是如何以RESTFul方式调用它?例如(http://localhost:4574/Home/Add/2/3

1 个答案:

答案 0 :(得分:3)

您可以定义路线:

routes.MapRoute(
    "MyRoute",
    "{controller}/{action}/{a}/{b}",
    new { controller = "Home", action = "Add" },
    // it's always a good idea to define route constraints
    // in this case we are constraining the a and b parameters to numbers only
    new { a = @"\d+", b = @"\d+" } 
);

然后:

public ActionResult Add(int a, int b)
{
    return Content(string.Format("The result of {0}+{1}={2}", a, b, a + b));
}