我有一个使用.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”转换为视图所需的视图?
谢谢!
编辑:格式化
答案 0 :(得分:1)
如果您只需要一个字符模型,则只需在cshtml顶部使用@model Character
IEnumerable用于遍历对象集合。