Передача одного объекта из контроллера в представление - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть веб-игра, созданная с использованием .netCore 2 и платформы сущностей.

Игра работает, но я только что добавил новую функцию.В одном из представлений пользователь может нажать кнопку, которая создает нового персонажа через контроллер.

Вот этот метод контроллера:

   public async Task<IActionResult> AddCharacter(Guid playerId)
    {
        ICharManagement charMgr = new CharManagementClient();

        Character newCharacter = await charMgr.AddCharacterAsync(
            "Test Character",
            new Guid("1e957dca-3fe1-4214-b251-a96e0106997a")
            );

        var newCharacterObject = newCharacter;
        return View(newCharacterObject);
    }

    The Character object is from an API I use and it looks like this:

        public partial class Character : object
    {
        private System.Guid Id;
        private string Name;
        private System.Nullable<System.DateTime> DateCreated;
        private int32 CharPlayer;
        private bool Playable;
    }

Переход по контроллеру в Visual Studio,Я вижу, что возвращается новый объект Character, и newCharacterObject выглядит следующим образом:

    Id  "1e957dca-3fe1-4214-b251-a96e0106997a"
    Name "Test Character"
    DateCreated "2/12/2019"
    CharPlayer 3821
    Playable "true"

На мой взгляд (cshtml) у меня установлена ​​модель:

    @model IEnumerable<Character>

Однако, когда я запускаю его, я получаю эту ошибку:

InvalidOperationException: элемент модели, передаваемый в ViewDataDictionary, имеет тип «Character», но для этого экземпляра ViewDataDictionary требуется элемент модели типа «System».Collections.Generic.IEnumerable`1 [Character] '.

Итак, как мне заставить мое представление отображать один объект Character (newCharacterObject) или как мне преобразовать "newCharacterObject" в то, что нужно представлению?

Спасибо!

Редактировать: Форматирование

1 Ответ

0 голосов
/ 12 февраля 2019

Если вам нужна только одна модель символов, вы можете просто использовать @model Character в верхней части вашего cshtml

IEnumerable используется для итерации по коллекции объектов.

...