Как передать список объектов из контроллера для просмотра? - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть некоторые данные (список контрактов данных) в моем контроллере.Я хочу показать поля / значения этого списка в моем представлении.Как мне сделать это правильно?

Это код внутри моего контроллера, где я получаю данные списка:

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;
        }

Этот метод возвращает список контрактов данных (в данном случае только один),

Я выполнил тестовый метод в том же контроллере, а также в методе Index:

public ActionResult Index()
        {
            var shipmentDataTest = Get(94);

            ViewBag.shipmentTestData = shipmentDataTest;

            return View();
        }

Когда я отлаживаю бэкэнд, он возвращает правильную поставку (с идентификатором 94).

Теперь я хочу показать информацию о доставке в моем представлении.

Я сделал variabele в моем представлении:

<script>
    var shipmentTestData = '@ViewBag.shipmentTestData';
</script>

И в моем файле приложения Vue назначены правильные значения:

var Vue = new Vue({
    el: "#vueapp",
    components: ["error"],
    data: {
        shipmentTestData: shipmentTestData
    }
});

Чем при вызове данных будут показываться не значения, а общая строка.

<p>{{ shipmentTestData }}</p>

Возвращает это:

System.Collections.Generic.List`1[ShipmentDataContract]

Кто-нибудь знает, как это исправить?По какой-то причине я назначаю переменную с форматной строкой, которая вызывает эту проблему, я предполагаю, но как я могу это исправить?

Ответы [ 2 ]

2 голосов
/ 23 апреля 2019

Это правильный путь.

Модель:

   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
0 голосов
/ 23 апреля 2019

Если вы хотите использовать список в качестве строки, вы можете отправить результат как

 IList<string> someStrings = Get(94); // i assume than get method returns a list of "strings"
 string joined = string.Join(",", someStrings );
 ViewBag.shipmentTestData = joined;

Теперь вы отправляете, чтобы добавить список "shipmentDataTest" в список через запятую.Дайте мне знать, если это то, что вы ищете.Привет.

...