如何将对象列表从控制器传递给视图?
How do I pass a list of objects from controller to view?
我的控制器中有一些数据(数据合同列表)。我想在我的视图中显示该列表的字段/值。我该如何正确执行此操作?
这是我获取列表数据的控制器中的代码:
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;
}
此方法returns 数据合同列表(在本例中只有一个)。
我也在同一个控制器中创建了一个测试方法,也在 Index 方法中:
public ActionResult Index()
{
var shipmentDataTest = Get(94);
ViewBag.shipmentTestData = shipmentDataTest;
return View();
}
当我调试后端时,它returns正确的发货(ID 94)。
现在我想在我的视图中显示发货信息。
我在我看来做了一个变量:
<script>
var shipmentTestData = '@ViewBag.shipmentTestData';
</script>
并在我的 Vue 应用程序文件中分配了正确的值:
var Vue = new Vue({
el: "#vueapp",
components: ["error"],
data: {
shipmentTestData: shipmentTestData
}
});
当我调用数据时,它不会显示值,而是一个通用字符串。
<p>{{ shipmentTestData }}</p>
它returns这个:
System.Collections.Generic.List`1[ShipmentDataContract]
有人知道如何解决这个问题吗?出于某种原因,我分配的变量是格式字符串,这导致了我假设的这个问题,但我该如何解决这个问题?
如果你想将列表用作字符串,你可以像这样发送结果
IList<string> someStrings = Get(94); // i assume than get method returns a list of "strings"
string joined = string.Join(",", someStrings );
ViewBag.shipmentTestData = joined;
现在您要将 "shipmentDataTest" 列表作为逗号分隔列表发送给前端。
让我知道这是否是您要找的东西。你好。
这是正确的方法。
型号:
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
我的控制器中有一些数据(数据合同列表)。我想在我的视图中显示该列表的字段/值。我该如何正确执行此操作?
这是我获取列表数据的控制器中的代码:
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;
}
此方法returns 数据合同列表(在本例中只有一个)。
我也在同一个控制器中创建了一个测试方法,也在 Index 方法中:
public ActionResult Index()
{
var shipmentDataTest = Get(94);
ViewBag.shipmentTestData = shipmentDataTest;
return View();
}
当我调试后端时,它returns正确的发货(ID 94)。
现在我想在我的视图中显示发货信息。
我在我看来做了一个变量:
<script>
var shipmentTestData = '@ViewBag.shipmentTestData';
</script>
并在我的 Vue 应用程序文件中分配了正确的值:
var Vue = new Vue({
el: "#vueapp",
components: ["error"],
data: {
shipmentTestData: shipmentTestData
}
});
当我调用数据时,它不会显示值,而是一个通用字符串。
<p>{{ shipmentTestData }}</p>
它returns这个:
System.Collections.Generic.List`1[ShipmentDataContract]
有人知道如何解决这个问题吗?出于某种原因,我分配的变量是格式字符串,这导致了我假设的这个问题,但我该如何解决这个问题?
如果你想将列表用作字符串,你可以像这样发送结果
IList<string> someStrings = Get(94); // i assume than get method returns a list of "strings"
string joined = string.Join(",", someStrings );
ViewBag.shipmentTestData = joined;
现在您要将 "shipmentDataTest" 列表作为逗号分隔列表发送给前端。 让我知道这是否是您要找的东西。你好。
这是正确的方法。
型号:
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