MVC 4 以 ActionResult 形式返回 JSON
MVC 4 以 ActionResult 形式返回 JSON
我试图让我的ApiController正常工作。但是某种方式我不能返回Json()
。
下面是编译器的错误信息:
Error CS0029 无法隐式地将类型\'System.Web.Http.Results.JsonResult<>\'转换为\'System.Web.Mvc.JsonResult\' Opten.Polyglott.Web D:\\Development\\git\\Opten.Polyglott\\src\\Opten.Polyglott.Web\\Controllers\\NewsletterApiController.cs
我无法解释为什么不能将Json()
转换为ActionResult
,即使Json()
继承了ActionResult
。
这是我的控制器:
using MailChimp; using MailChimp.Helper; using Opten.Polyglott.Web.Models; using Opten.Umbraco.Common.Extensions; using System.Configuration; using System.Web.Mvc; using Umbraco.Core.Logging; using Umbraco.Web.WebApi; namespace Opten.Polyglott.Web.Controllers { public class NewsletterApiController : UmbracoApiController { public ActionResult Subscribe(Newsletter newsletter) { bool isSuccessful = false; if (ModelState.IsValid) { isSuccessful = SubscribeEmail(newsletter.Email); } return Json(new { isSuccess = isSuccessful }); } } }
感谢任何帮助。
admin 更改状态以发布 2023年5月23日
你的问题出在使用了错误的命名空间,因为UmbracoApiController
很可能继承自ApiController (来自System.Web.Http)
而不是Controller (来自System.Web.Mvc)
,因此它们具有不同的依赖关系。为了解决你的问题,首先删除:
using System.Web.Mvc;
然后添加:
using System.Web.Http;
对于这种情况下的返回类型,应该是IHttpActionResult
,因此你应该有以下代码:
using MailChimp; using MailChimp.Helper; using Opten.Polyglott.Web.Models; using Opten.Umbraco.Common.Extensions; using System.Configuration; using System.Web.Http; using Umbraco.Core.Logging; using Umbraco.Web.WebApi; namespace Opten.Polyglott.Web.Controllers { public class NewsletterApiController : UmbracoApiController { public IHttpActionResult Subscribe(Newsletter newsletter) { bool isSuccessful = false; if (ModelState.IsValid) { isSuccessful = SubscribeEmail(newsletter.Email); } return Json(new { isSuccess = isSuccessful }); } } }
如果这样行得通,请告诉我。