IHttpActionResult返回Json对象

Aja*_*y P 9 json asp.net-mvc-4 asp.net-web-api

我创建了一个mvc api返回字符串的方法.但string我没有回来,而是想回来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);
    }
Run Code Online (Sandbox Code Playgroud)

在这里它返回Ok<string>(newPassword);现在我想要返回Json object.我怎样才能返回Json对象

Ser*_*ejs 11

试试看:

[AllowAnonymous]
[HttpPost]
[Route("resetpassword")]
public IHttpActionResult ResetPassword(string email)
{
    //...
    return Json(newPassword);
}
Run Code Online (Sandbox Code Playgroud)

  • 我不清楚为什么要返回一个普通字符串,所以我做了一些类似`return Json(new {success = true});` (2认同)

use*_*091 8

你实际上已经在使用关键的东西......

[HttpGet]
public IHttpActionResult Test()
{
     return Ok(new {Password = "1234"});
}
Run Code Online (Sandbox Code Playgroud)


Tai*_*deh 5

您需要将其作为CLR对象返回,以便Web API将其序列化为JSON,您可以创建自己的POCO类或者像这样执行:

 var passResponse =  new
              {
                  newPassword= yourNewPassword
              };
Run Code Online (Sandbox Code Playgroud)

但从安全的角度来看,你所做的事情是不正确的,你绝对不应该通过电子邮件发送普通密码,你应该重置用户密码,为他们提供一个重置电子邮件链接到你的门户网站,并带有一些令牌,他们应该输入新的密码.你在这做什么并不安全.