将单个对象从控制器传递到视图

时间:2019-02-12 17:59:24

标签: asp.net-core-mvc entity-framework-core asp.net-core-2.0

我有一个使用.netCore 2和实体框架构建的基于Web的游戏。

游戏有效,但我刚刚添加了一项新功能。在其中一个视图中,用户可以按下通过控制器创建新角色的按钮。

这是控制器方法:

   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的类型为“字符”,但这是    ViewDataDictionary实例需要以下类型的模型项   'System.Collections.Generic.IEnumerable`1 [Character]'。

那么如何获取显示单个Character对象(newCharacterObject)的视图,或者如何将“ newCharacterObject”转换为视图所需的视图?

谢谢!

编辑:格式化

1 个答案:

答案 0 :(得分:1)

如果您只需要一个字符模型,则只需在cshtml顶部使用@model Character

IEnumerable用于遍历对象集合。