2013-03-13 36 views
0

我有一个控制器操作返回一个JSON数据。它可以通过getJSON方法轻松访问。但我希望通过Web API检索JSON数据。是否可以通过web API返回json数据?

我的控制器代码是

public ActionResult GetProfile(string profileName) 
    { 
     var profileDataService = new BokingEngine.MasterDataService.GetProfileDataService(); 
     var request = new ProfileSearchCriteria { Name = profileName }; 
     var profileDetails = profileDataService.GetList(request); 
     return Json(profileDetails, JsonRequestBehavior.AllowGet); 

    } 
+0

[检查此链接](http://stackoverflow.com/questions/9847564/how-do-i-get-asp-net-web-api-to-return-json-instead-of-xml-using -chrome)和[链接2](http://www.hanselman.com/blog/OneASPNETMakingJSONWebAPIsWithASPNETMVC4BetaAndASPNETWebAPI.aspx) – 2013-03-13 06:05:05

+0

顺便说一句你的代码使用的是ASP.NET MVC,而不是ASP.NET Web API。您是否尝试将MVC的代码转换为Web API或其他东西? – Eilon 2013-03-13 06:14:11

回答

5

在网页API,这将是你的行动:

public class ProfileController : ApiController { 
    public ProfileData Get(string profileName) 
    { 
     var profileDataService = new BokingEngine.MasterDataService.GetProfileDataService(); 
     var request = new ProfileSearchCriteria { Name = profileName }; 
     var profileDetails = profileDataService.GetList(request); 
     return profileDetails; 
    } 
} 

那么你的客户端应该指定他们想要的数据类型。如果指定了Accept:application/json标头,则Web API将返回JSON。接受:text/xml将产生XML。

更多信息:http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters

+0

它不会在我的情况下工作,因为'profileDetails'和'ProfileData'是一个模型类。我不能返回课堂上课 – Sandy 2013-03-13 09:01:26

0

您的ActionResult更改为JsonResult所以它返回JSON。如果你想使Web API特定,你应该创建一个继承ApiController的控制器。

相关问题