C# 如何将对象列表从控制器传递到视图?
我的控制器中有一些数据(数据契约列表)。我想在视图中显示该列表的字段/值。我如何正确地做到这一点 这是控制器中的代码,我从中获取列表数据:C# 如何将对象列表从控制器传递到视图?,c#,list,vue.js,model-view-controller,datacontract,C#,List,Vue.js,Model View Controller,Datacontract,我的控制器中有一些数据(数据契约列表)。我想在视图中显示该列表的字段/值。我如何正确地做到这一点 这是控制器中的代码,我从中获取列表数据: public List<ShipmentDataContract> Get(long shipmentServiceId) { Logging.Instance.Info($"Shipment request came in for shipment with ShipmentServiceId = {sh
public List<ShipmentDataContract> Get(long shipmentServiceId)
{
Logging.Instance.Info($"Shipment request came in for shipment with ShipmentServiceId = {shipmentServiceId}");
ShipmentQueryResult shipmentQueryResult = GetShipmentByShipmentServiceIdResult(shipmentServiceId);
Logging.Instance.Debug($"Shipment queried with ShipmentServiceId = {shipmentServiceId}");
List<ShipmentDataContract> shipmentDataContracts = GetShipmentsFromResult(shipmentQueryResult);
Logging.Instance.Info($"Shipment retrieved for shipment with ShipmentServiceId = {shipmentServiceId}.");
return shipmentDataContracts;
}
当我调试后端时,它返回正确的装运(ID为94)
现在我想在视图中显示装运信息
在我看来,我做了一个变数:
<script>
var shipmentTestData = '@ViewBag.shipmentTestData';
</script>
当我调用数据时,它不会显示值,而是一个通用字符串
<p>{{ shipmentTestData }}</p>
有人知道怎么修理这个吗?由于某种原因,我分配的变量是字符串格式,这导致了我假设的这个问题,但是我如何解决这个问题呢?如果你想将列表用作字符串,你可以发送如下结果
IList<string> someStrings = Get(94); // i assume than get method returns a list of "strings"
string joined = string.Join(",", someStrings );
ViewBag.shipmentTestData = joined;
IList someStrings=Get(94);//我假设than get方法返回一个“字符串”列表
连接字符串=string.Join(“,”,someStrings);
ViewBag.shipmentTestData=已连接;
现在,您要将列表“shipmentDataTest”作为逗号分隔的列表发送到frotend。
让我知道这是否是你要找的。问候语。如果要将列表用作字符串,可以发送如下结果
IList<string> someStrings = Get(94); // i assume than get method returns a list of "strings"
string joined = string.Join(",", someStrings );
ViewBag.shipmentTestData = joined;
IList someStrings=Get(94);//我假设than get方法返回一个“字符串”列表
连接字符串=string.Join(“,”,someStrings);
ViewBag.shipmentTestData=已连接;
现在,您要将列表“shipmentDataTest”作为逗号分隔的列表发送到frotend。
让我知道这是否是你要找的。问候。这是正确的方式 型号:
public class ShipmentData
{
Task<List<ShipmentDataContract>> Get(long shipmentServiceId)
{
return YourList;
}
视图:
这是正确的方法 型号:
public class ShipmentData
{
Task<List<ShipmentDataContract>> Get(long shipmentServiceId)
{
return YourList;
}
视图:
就在这一行
var shipmentTestData='@ViewBag.shipmentTestData'
将shipmentTestData
var设置为要返回的列表,然后尝试将其用作字符串,这样就可以获得列表的.ToString()
值,即它的类型。如果你想显示列表中的项目,你需要迭代它们并在视图中显示属性。嘿,谢谢你的回复。我注意到了,但是我该怎么做呢?因为我正在使用razor在视图中显示它。找不到实现这一点的方法…您可以跳过将其设置为javascript变量,在视图中使用Razor迭代列表并填充HTML。这篇文章展示了如何将Razor
和ViewBag
一起使用(),但我可以;你不能正确使用它吗?你能给我提供一个示例代码片段吗?你什么意思,不能访问它??除了向用户显示此数据之外,您还想完成什么?就在这一行var shipmentTestData='@ViewBag.shipmentTestData'
将shipmentTestData
var设置为要返回的列表,然后尝试将其用作字符串,这样就可以获得列表的.ToString()
值,即它的类型。如果你想显示列表中的项目,你需要迭代它们并在视图中显示属性。嘿,谢谢你的回复。我注意到了,但是我该怎么做呢?因为我正在使用razor在视图中显示它。找不到实现这一点的方法…您可以跳过将其设置为javascript变量,在视图中使用Razor迭代列表并填充HTML。这篇文章展示了如何将Razor
和ViewBag
一起使用(),但我可以;你不能正确使用它吗?你能给我提供一个示例代码片段吗?你什么意思,不能访问它??除了向用户显示这些数据之外,您还想完成什么?嘿,谢谢您的回复。我实际上得到了一份数据合同清单。因此,您可以尝试使用JsonConvert.SerializeObject(dataContracts),并返回一个json字符串,以便在cshtml中使用javascript进行操作。对于这个JsonConvert方法,我使用Newtonsoft.Json.10.0.3Hey,感谢您的回复。我实际上得到了一份数据合同清单。因此,您可以尝试使用JsonConvert.SerializeObject(dataContracts),并返回一个json字符串,以便在cshtml中使用javascript进行操作。对于此JsonConvert方法,我使用Newtonsoft.Json.10.0.3,但此解决方案不适用于我,因为我需要在模板文件中而不是在主视图文件中加载数据。我能够在那里加载数据,并且工作正常。但是这里的问题是模板文件,您确定返回的是正确的吗?显示returnshipmentdatacontracts在Get
函数中选择code>。不应该是returnshipmentdatacontracts[shipmentServiceId]代码>如果要返回特定对象?否则你会得到你所描述的,一个列表。它必须是一个列表是的。。返回一个也不起作用。问题是我只能在主视图文件的列表中加载对象,而不能在模板文件中加载。。我正在寻找一种方法来获取get方法在我的视图中返回的完整对象以供使用。。现在我有一个字符串,它是错误的数据类型,但是这个解决方案不适合我,因为我需要在模板文件中而不是在主视图文件中加载数据。我能够在那里加载数据,并且工作正常。但是这里的问题是模板文件,您确定返回的是正确的吗?显示returnshipmentdatacontracts在Get
函数中选择code>。不应该是returnshipmentdatacontracts[shipmentServiceId]代码>如果要返回特定对象?否则你会得到你所描述的,一个列表。它必须是一个列表是的。。返回一个也不起作用。问题是我只能在主视图文件的列表中加载对象,而不能在模板文件中加载。。我正在寻找一种方法来获取get方法在我的视图中返回的完整对象以供使用。。现在我有一个字符串,它是错误的数据类型
public class ShipmentData
{
Task<List<ShipmentDataContract>> Get(long shipmentServiceId)
{
return YourList;
}
public ActionResult Index()
{
var shipmentDataTest = ShipmentData.Get(//index);
return View(shipmentDataTest);
}
@Model YourShipmentModel
//here you can call Model.variable