我有一个MVC项目。我想得到一个简单的json响应{结果:" ok"}。以下是我的代码
using System;
using System.Web.Mvc;
using Microsoft.Xrm.Sdk;
using CRM_WebApp.Models;
using System.Web.Http;
using System.Web.Http.Cors;
using Microsoft.Xrm.Sdk.Query;
using CRM_WebApp.Services;
namespace CRM_WebApp.Controllers
{
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class CallBackFormController : ApiController
{
[System.Web.Mvc.HttpPost]
public JsonResult Post([FromBody] CallBackFormModel CallBackFormModel)
{
ConnectiontoCrm connectiontoCrm = new ConnectiontoCrm();
//connectiontoCrm.GetConnectiontoCrm();
connectiontoCrm.GetConnectiontoCrmCopy();
Entity lead = new Entity("lead");
lead["firstname"] = CallBackFormModel.FirstName;
lead["mobilephone"] = CallBackFormModel.Telephone;
lead["telephone3"] = CallBackFormModel.Telephone;
Guid tisa_callbackformid = connectiontoCrm.organizationservice.Create(callbackform);
return new JsonResult { Data = new { result = "ok" } };
}
}
}
我的代码给了我以下回复:
{
"ContentEncoding": null,
"ContentType": null,
"Data": {
"result": "ok"
},
"JsonRequestBehavior": 1,
"MaxJsonLength": null,
"RecursionLimit": null
}
如何更改我的代码以获得回复:{result:" ok"}
答案 0 :(得分:3)
在您的代码中进行一些调查之后,我确实注意到存在一些基本错误。
当你从ApiController
继承时,所以你在这里创建WebApiController,而不是MVC控制器(可以通过继承Controller
类创建)
您必须小心使用的命名空间,因为有些类和属性具有相同的名称但位于不同的命名空间中,例如,HttpPost
属性存在于{{1}中和System.Web.Http
并且根据您的代码,您必须使用前一个命名空间中的那个,因为您继承自System.Web.Mvc
。
请记住,ApiController
适用于ASP.NET MVC,System.Web.Mvc
适用于Web API。
因此,在解决了之前的所有问题之后,工作代码应该是这样的
System.Web.Http
我建议您阅读有关ASP.NET MVC和Web API以及它们之间的区别,以避免将来出现这类问题。
答案 1 :(得分:1)
试试这个:
return Json(new { result = "ok" }, JsonRequestBehavior.AllowGet);
答案 2 :(得分:0)
要回答您的问题,我遇到了同样的问题,因为当我返回响应时,我喜欢返回多个对象/类型。
例如,我总是返回包含一些成功和错误消息的消息结果。这个对象在我所有的api响应中都已被重用。然后,我想返回第二个对象,其中包含任何数据,例如客户列表或其他任何数据。
这就是我如何使其适用于WebAPI ...
public IHttpActionResult DeleteEmailTemplate(int id)
{
FormResponse formResponse = new FormResponse("SUCESS MESSAGE HERE");
List<string> strings = new List<string>();
strings.Add("this is a test");
strings.Add("this is another test");
return Json(new { MessageResult = formResponse, TestObject = strings });
}