ASP的JSON返回错误

时间:2016-03-29 13:23:42

标签: c# asp.net json asp.net-mvc

我们正在使用由外部供应商编写的ASP应用程序。我的任务是对应用程序进行一些小改动但是我对asp或json一无所知。通过一些研究,我把它放在一起。我在表单上创建了一个文本框,我想将客户端IP地址返回到该文本框。我写了一个函数然后一个控制器。两者的代码如下:

功能

function processgetip(event) {
    // Within this function, make an AJAX call to get the IP Address
    $.getJSON('@Url.Action("GetIPAddress","getipaddress")', function (ip) {
        // When this call is done, your IP should be stored in 'ip', so
        // You can use it how you would like

        // Example: Setting a TextBox with ID "YourElement" to your returned IP Address
        $("#facility").val(ip);
    });
}

控制器

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Web.Http;
    using System.Web;
    using System.Web.Mvc;

    namespace Parker_Hannifin.Controllers
    {
    public class getipaddressController : ApiController
{
    public JsonResult GetIPAddress()
    {

        System.Web.HttpContext context = System.Web.HttpContext.Current;

        string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

        if (!string.IsNullOrEmpty(ipAddress))
        {
            string[] addresses = ipAddress.Split(',');
            if (addresses.Length != 0)
            {
                //return addresses[0]; //
                ipAddress = addresses[0];
            }
        }

        //replace ipaddress with ipAddress
        return Json(ipAddress, JsonRequestBehavior.AllowGet);
    }


}
    }

我在这行代码中遇到这些错误:

return Json(ipAddress, JsonRequestBehavior.AllowGet);

我得到的错误是:

  

最佳重载方法匹配   System.Web.Http.ApiController.Json(字符串,   Newtonsoft.Json.JsonSerializerSettings)有一些无效的参数。   无法从System.Web.Mvc.JsonRequestBehavior转换为   Newtonsoft.Json.JsonSerializerSettings

如果有人能告诉我他们的意思以及如何解决这些问题,我将非常感激。

1 个答案:

答案 0 :(得分:12)

Json中带有两个参数的

ApiController的签名为

protected internal JsonResult<T> Json<T>(
T content,
JsonSerializerSettings serializerSettings
)
Json中带有两个参数的

Controller的签名为

protected internal JsonResult Json(
object data,
JsonRequestBehavior behavior
)

getipaddressController继承自ApiController,但您使用了控制器方法Json。使用,

return new JsonResult()
{
 Data = ipAddress,
 JsonRequestBehavior = JsonRequestBehavior.AllowGet
};

如果你仍然想要这种行为。