2012-02-13 22 views
4

我該如何將此行爲用作服務?MVC3作爲簡單的網絡服務行動

public class HomeController : Controller { 

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

如果我瀏覽到這個網址,http://mysite.com/Home/GetSomeValue,它返回一個字符串,沒有任何形式的任何HTML或標記。

那麼,讓我從使用這種方法作爲服務返回一些有意義的東西,比如說json,我可以從任何地方撥打電話?

如果這是可能的,我將如何做到這一點(從另一個asp.net網站後面的代碼說)?

在此先感謝。

+1

這是一種很好的方法來處理Web服務,並且絕對是我這樣做的方式。我更喜歡使用MVC來提供我的JSON。 – 2012-02-13 20:19:22

回答

4

100%這樣做沒有錯。

一個示例應用程序 - NerdDinner - 完成這件事情是一樣的,可以平穩地加載晚餐。

控制器和http://nerddinner.codeplex.com/SourceControl/changeset/view/70027#874293爲JavaScript文件參見http://nerddinner.codeplex.com/SourceControl/changeset/view/70027#874260(尋找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"); 
} 
+0

我有書呆子晚餐代碼。我必須詳細檢查它。 – 2012-02-13 20:26:59

+0

那麼,我會使用WebClient類來調用這個動作方法嗎? – 2012-02-13 20:42:49

+0

你將不得不使用webclient,這不幸的是它在這方面與普通服務不太一樣。 – 2012-02-13 20:49:37