Asp.net 将记录集作为Json从C#代码beind传递到aspx页面

Asp.net 将记录集作为Json从C#代码beind传递到aspx页面,asp.net,json,client-side,json.net,Asp.net,Json,Client Side,Json.net,在页面加载中,我得到的数据如下 var products = BLL.Presenters.Products.GetAll(); 如果大约有10种产品,它将返回一个列表 我希望将该产品列表作为json传递到aspx页面,然后使用json对象执行一些客户端操作 如何在不使用隐藏字段的情况下将JSON对象从代码隐藏中的记录集传递到aspx页面 p、 我们已经在使用其他Json材料中的Newtonsoft.Json库了 -更新- 我没能让它工作。我现在正在JS中执行ajax调用(无代码隐藏)并获取所

在页面加载中,我得到的数据如下

var products = BLL.Presenters.Products.GetAll();
如果大约有10种产品,它将返回一个列表

我希望将该产品列表作为json传递到aspx页面,然后使用json对象执行一些客户端操作

如何在不使用隐藏字段的情况下将JSON对象从代码隐藏中的记录集传递到aspx页面

p、 我们已经在使用其他Json材料中的Newtonsoft.Json库了

-更新-


我没能让它工作。我现在正在JS中执行ajax调用(无代码隐藏)并获取所需的数据。

创建要发送到ASPX页面的对象的视图模型。这可以是与正常运行时代码中使用的类完全相同的类。一旦有了这个类,就可以使用AutoMapper从一个对象类转换到另一个对象类。然后可以将这个新映射的对象添加到返回视图中

var products = BLL.Presenters.Products.GetAll().ToList();
Mapper.CreateMap<Products, ProductsViewModel>()
var output = Mapper.Map<IEnumerable<Products>, List<ProductsViewModel>>(products);
return View("Index", output);

我假设您有更多字段,但这只是为了说明。如果您将ViewModel类中的字段命名为与主对象类中相同的名称,AutoMapper将自动从一种类型转换为另一种类型,这样您就可以通过ViewBag将对象推送到ASPX页面。

将JSON块传递到页面的一种方法是直接在页面上呈现它

<script type="text/javascript">
    var myData = <%= MyJsonString %>;
</script>

在代码隐藏中,您将文本控件的文本设置为您生成的JSON字符串。

是否使用AJAX执行此操作?JsonConvert.SerializeObject方法是否不适用于您?否-我们希望将JSON从代码隐藏“加载”到aspx页面。我们在代码中使用JSON作为对象,但是如何将其传递到aspx页面?如果您不使用AJAX,那么使用JSON和“然后做一些客户端工作”会带来什么好处?我不想在这里和你争论,我只是想完全理解你的用例。@TheGreatCO:我想他的问题是如何将JSON传递到页面。。。不使用隐藏的field@TheGreatOC:'返回视图(“索引”,输出);'@DavidKEgghead在这种情况下,我相信您必须在页面加载时使用某种AJAX请求来获取信息,或者使用隐藏字段将其嵌入页面中。我不知道还有其他方法可以将JSON发送到页面。谢谢,我们正在努力避免只向页面写入。我希望将数据放在一个“js对象”中。。我们过去使用过一个隐藏字段。你的问题只是说明你不想在页面上放置隐藏字段。如果您根本不想写入页面,那么就需要一个AJAX调用。我不知道你所说的“js对象”是什么意思。当JSON字符串解析它所在的脚本块时,它将被解释为javascript对象。
<script type="text/javascript">
    var myData = <%= MyJsonString %>;
</script>
<script type="text/javascript">
    var myData = <asp:Literal runat="server" id="MyJsonLiteralControl" />;
</script>