MVC3 Action как простой веб-сервис - PullRequest
4 голосов
/ 14 февраля 2012

Как я могу использовать это действие в качестве службы?

 public class HomeController : Controller {

     public string GetSomeValue(){
         return "This is some value";
     }
 }

Если я перехожу по этому URL, http://mysite.com/Home/GetSomeValue, возвращает строку без каких-либо HTML или разметки любого рода.

Итак, что же мешает мне использовать этот метод в качестве службы, которая возвращает что-то значимое, скажем, json, которое я мог бы вызвать откуда угодно?

И если это возможно, как бы я это сделал (скажем, из кода другого сайта asp.net)?

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 14 февраля 2012

100% Ничего плохого в этом нет.

Пример приложения - NerdDinner - делает то же самое для спокойной загрузки обедов.

См. http://nerddinner.codeplex.com/SourceControl/changeset/view/70027#874260 для контроллера и http://nerddinner.codeplex.com/SourceControl/changeset/view/70027#874293 для файла javascript (ищите NerdDinner.FindMostPopularDinners)

, например

C #

    // AJAX: /Search/GetMostPopularDinners
    // AJAX: /Search/GetMostPopularDinners?limit=5

    [HttpPost]
    public ActionResult GetMostPopularDinners(int? limit)
    {
        var dinners = dinnerRepository.FindUpcomingDinners();

        // Default the limit to 40, if not supplied.
        if (!limit.HasValue)
            limit = 40;

        var mostPopularDinners = from dinner in dinners
                                 orderby dinner.RSVPs.Count descending
                                 select dinner;

        var jsonDinners =
            mostPopularDinners.Take(limit.Value).AsEnumerable()
            .Select(item => JsonDinnerFromDinner(item));

        return Json(jsonDinners.ToList());
    } 

JS

NerdDinner.FindMostPopularDinners = function (limit) {
    $.post("/Search/GetMostPopularDinners", { "limit": limit }, NerdDinner._renderDinners, "json");
}
2 голосов
/ 14 февраля 2012

По сути это RESTful-сервис:

http://www.ibm.com/developerworks/webservices/library/ws-restful/

Все, что вам нужно, это создать http-запрос для использования этой службы, вы можете использовать Hammock для создания таких запросов:

https://github.com/danielcrenna/hammock

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...