2014-11-27 7 views
8

Я создал один метод в mvc api, который возвращает строку. Но вместо того, чтобы возвращать string, я хочу вернуть Json Object. Вот мой код.IHttpActionResult return Json object

[AllowAnonymous] 
    [HttpPost] 
    [Route("resetpassword")] 
    public IHttpActionResult ResetPassword(string email) 
    { 
     CreateUserAppService(); 
     string newPassword =_userAppService.ResetPassword(email); 

     string subject = "Reset password"; 
     string body = @"We have processed your request for password reset.<br/><br/>"; 
     string from = ConfigurationManager.AppSettings[Common.Constants.FromEmailDisplayNameKey]; 
     body = string.Format(body, newPassword, from); 

     SendEmail(email, subject, body, string.Empty); 
     return Ok<string>(newPassword); 
    } 

Здесь он возвращает Ok<string>(newPassword); Теперь я хочу вернуться Json object. Как я могу вернуть Объект Json?

ответ

5

Вы должны вернуть его в качестве объекта CLR так Web API сериализации его JSON, вы можете создать свой собственный класс POCO или сделать это следующим образом:

var passResponse = new 
       { 
        newPassword= yourNewPassword 
       }; 

Но с точки зрения безопасности, что вы делаете, не является правильно, вы должны NEVER отправлять простые пароли по электронной почте, вы должны сбросить пароль пользователя, предоставив им ссылку на сброс электронной почты на ваш портал с помощью некоторого токена, и они должны ввести новый пароль. То, что вы здесь делаете, небезопасно.

+0

Привет Taiseer, Спасибо за ответ. Я попробовал ваш код. Он возвращает меня "{newPassword = FER3P74G}" Но мне нужно что-то вроде '{" newPassword ":" FER3P74G "}'. Как я могу это сделать? –

+0

Попробуйте создать класс POCO, затем –

+0

Как его создать? можете ли вы отправить код для этого? –

8

Попробуйте это:

[AllowAnonymous] 
[HttpPost] 
[Route("resetpassword")] 
public IHttpActionResult ResetPassword(string email) 
{ 
    //... 
    return Json(newPassword); 
} 
+1

Не было понятно для меня, почему я хотел бы вернуть простую строку, поэтому я сделал что-то вроде 'return Json (new {success = true}); – incutonez

6

Вы на самом деле уже с помощью ключа вещь ...

[HttpGet] 
public IHttpActionResult Test() 
{ 
    return Ok(new {Password = "1234"}); 
} 
1

Создание возврата объекта.

public class PasswordResponse{ 
    public string Password {get;set;} 
    //...other stuff to pass... 
} 

Затем верните экземпляр типа в ответ.

return OK(new PasswordResponse(){Password = newPassword});