我们正在使用由外部供应商编写的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
如果有人能告诉我他们的意思以及如何解决这些问题,我将非常感激。
答案 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
};
如果你仍然想要这种行为。