当前位置: 首页 > 编程语言 > C#

如何将C#列表转换为Javascript数组?Share

时间:2023-04-10 19:27:50 C#

如何将C#List转换为Javascript数组?我有一个数据表,我正在将其转换为列表,对其进行序列化并使用视图模型将其传递给我的视图。我的viewmodel看起来像这样:publicclassAddressModel{publicstringAddresses{get;放;我的控制器操作如下所示:AddressModellAddressGeocodeModel=newAddressGeocodeModel();ListlAddresses=newList();stringlSQL="从AddressTable中选择Address1、CityName、StateCode、ZipCode"+";//将数据转换为List以序列化为Javascript数组。//{...数据检索代码在此处...//}foreach(AddressTable.Rows中的DataRow行){string[]lAddress=newstring[5];lAddress[1]=row["Address1"].ToString();lAddress[2]=row["CityName"].ToString();lAddress[3]=row["StateCode"].ToString();lAddress[4]=row["邮政编码"].ToString();lAddresses.Add(lAddress);}lAddressGeocodeModel.UnitCount=lAddresses.Count().ToString();//这里我使用NewtonsoftJSON库来序列化我的列表lAddressGeocodeModel.Addresses=JsonConvert.SerializeObject(lAddresses);返回视图(lAddressModel);然后在我看来,我得到以下地址字符串:[["123StreetSt.","City","CA","12345"],["456StreetSt.","City","UT","12345"],["789StreetSt.","City","OR","12345"]]我怎样才能让这个序列化的字符串驻留在剃刀模型中的javascript数组中?您可以将值直接注入JavaScript://View.cshtml请参阅JSON.parse、Html.Raw或者您可以通过Ajax值获取:publicActionResultGetValues(){//逻辑//编辑你不需要序列化它只返回对象returnJson(new{Addresses:lAddressGeocodeModel});}看到jQuery.ajax很多方式JsonParse但我发现最有效的方式@模型列表这些答案中的许多都有效,但我发现到目前为止最简单的方法是通过ViewData或ViewBag发送数据并让JSON.Net在页面加载之前将其序列化Javascript生成或需要避免当AJAX开销时,我使用此技术:在控制器中:publicActionResultMyController(){varaddresses=myAddressesGetter();ViewData["addresses"]=addresses;returnView();}在视图中:@sectionscripts{}你总是可以依赖JSON.NET,一些浏览器对JSON反序列化的支持很差。另一个好处是您可以使用浏览器的视图-->SourceJavascript,因为它只是服务器端生成的文本。请注意,在大多数情况下,WebAPI是向客户端获取JSON的一种更优雅的方式。我会说这是您对数据建模的方式的问题。与其对地址使用字符串数组,不如这样做更简洁、更容易:创建一个表示地址的类,如下所示:publicclassAddress{publicstringAddress1{get;放;}publicstringCityName{得到;放;}publicstringStateCode{get;放;}publicstringZipCode{get;放;然后在您的视图模型中,您可以填充这些地址:publicclassViewModel{publicIListAddresses=newList();publicvoidPopulateAddresses(){foreach(DataRowrowinAddressTable.Rows){Addressaddress=newAddress{Address1=row["Address1"].ToString(),CityName=row["CityName"].ToString(),StateCode=row["StateCode"].ToString(),ZipCode=row["ZipCode"].ToString()};地址.Add(地址);}lAddressGeocodeModel.Addresses=JsonConvert.SerializeObject(Addresses);这将为您提供如下所示的JSON:[{"Address1":"123EasyStreet","CityName":"NewYork","StateCode":"NY","ZipCode":"12345"}]对于那些不想使用JSON的人,这是我的方法:这在ASP.NETCoreMVC中对我有用。无论如何,JSON是一个有效的JavaScript对象,当您自己打印JavaScript时,一旦转换为JSON,就不需要进一步编码/解码JSON。将打印以下内容,这是一个有效的JavaScript表达式。实现方法如下:以上是C#学习教程:HowtoconvertaC#ListtoaJavascriptarray?分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注---//View.cshtml本文收集自网络,不代表立场.如涉及侵权,请点击右侧联系管理会员删除。如需转载请注明出处: