Как создать действие контроллера RESTFul в ASP.NET MVC 3.0? - PullRequest
0 голосов
/ 15 февраля 2012

Я создал в своем домашнем контроллере действие, которое принимает текст:

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

Я могу вызвать это действие, используя приведенный ниже URL, передав текстовый параметр в виде строки запроса:

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

Однако я хотел бы иметь возможность вызывать это, используя следующий стиль:

http://localhost:4574/Home/DisplayText/some 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 Ответ

3 голосов
/ 15 февраля 2012

Вы можете определить маршрут:

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