如何从javascript访问DotnetNuke.Entities.Users
本文关键字:DotnetNuke Entities Users 访问 javascript | 更新日期: 2023-09-27 18:27:54
我想从Dotnetnuke收集userInfo到我的javascript网页。为了收集它,我使用$.getJSON:
$.getJSON("/DesktopModules/myModule/API/Service/GetUsers", "portalId=2",
function (allData) {
var mappedUsers = $.map(allData, function (item) {
return new myModule.User(item);
});
self.Users(mappedUsers);
});
我有这个服务控制器:
public class ServiceController : DnnApiController
{
[AllowAnonymous]
[HttpGet]
public HttpResponseMessage GetUsers(int portalId)
{
myController controller = new myController();
ArrayList items = controller.GetUsers(portalId);
return Request.CreateResponse(HttpStatusCode.OK, items);
}
}
public class myController // : ISearchable, IPortable
{
public ArrayList GetUsers(int portalId)
{
return UserController.GetUsers(portalId);
}
}
根据DNN API文件,该方法定义为:
public static ArrayList GetUsers(
int portalId
)
但是,当我在浏览器中测试我的服务时,它会失败并出现错误:"键入数据协定名称为"UserInfo:http://schemas.datacontract.org/2004/07/DotNetNuke.Entities.Users不应为"。考虑使用DataContractResolver或将任何未知类型静态添加到已知类型列表中,例如,使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表。"
有什么办法解决这个问题吗?
问题是,如果不设置自定义序列化,就无法序列化UserInfo。UserInfo对象无法自动序列化为JSON。
最简单的解决方案是创建自己的对象来表示响应中的UserInfo——要么是一个精简类,要么只是您需要的单个属性。