IHttpActionResult返回Json对象

IHttpActionResult返回Json对象,json,asp.net-mvc-4,asp.net-web-api,Json,Asp.net Mvc 4,Asp.net Web Api,我在mvcapi中创建了一个返回字符串的方法。但是我不想返回字符串,而是想返回Json对象。这是我的密码 [AllowAnonymous] [HttpPost] [Route("resetpassword")] public IHttpActionResult ResetPassword(string email) { CreateUserAppService(); string newPassword =_userAppS

我在
mvcapi
中创建了一个返回字符串的方法。但是我不想返回
字符串
,而是想返回
Json对象
。这是我的密码

    [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);
    }
[AllowAnonymous]
[HttpPost]
[路由(“重置密码”)]
公共IHttpActionResult重置密码(字符串电子邮件)
{
CreateUserAppService();
字符串newPassword=\u userAppService.ResetPassword(电子邮件);
string subject=“重置密码”;
string body=@“我们已处理您的密码重置请求。

”; 字符串from=ConfigurationManager.AppSettings[Common.Constants.FromEmailDisplayNameKey]; body=string.Format(body,newPassword,from); SendEmail(电子邮件、主题、正文、字符串。空); 返回Ok(新密码); }

在这里它返回
Ok(newPassword)
现在我想返回
Json对象
。如何返回Json对象?

您需要将其作为CLR对象返回,以便Web API将其序列化为Json,您可以创建自己的POCO类或按如下方式执行:

 var passResponse =  new
              {
                  newPassword= yourNewPassword
              };
但是,从安全角度来看,您所做的是不正确的,您应该永远不通过电子邮件发送普通密码,您应该通过向用户提供指向您的门户网站的重置电子邮件链接以及一些令牌来重置用户密码,并且他们应该输入新密码。你在这里做的事情不安全。

试试看:

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

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

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

创建一个返回对象

public class PasswordResponse{
    public string Password {get;set;}
    //...other stuff to pass...
}
然后在响应中返回该类型的实例


返回OK(new PasswordResponse(){Password=newPassword})

您好,谢谢您的回复。我试过你的密码。它返回我“{newPassword=FER3P74G}”,但我想要类似于
{“newPassword”:“FER3P74G”}
的东西。我该怎么做?试着创建POCO类,然后我该怎么创建它?你能发布它的代码吗?我尝试了
JsonConvert.SerializeObject(passResponse)
,但它给出了
“{\'email\”:\”ajayp@sarvatranetwork.com\“}”
我不想要这些``我不清楚为什么要返回一个普通字符串,所以我做了类似于
返回Json(new{success=true})的事情