Ho un gioco basato sul web costruito usando .netCore 2 e framework di entità.
Il gioco funziona, ma ho appena aggiunto una nuova funzionalità. In una delle viste, l'utente può premere un pulsante che crea un nuovo personaggio tramite un controller.
Ecco il metodo del controller:
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;
}
Passando attraverso il controller in Visual Studio, posso vedere che viene restituito un nuovo oggetto Character e il nuovoCharacterObject ha il seguente aspetto:
Id "1e957dca-3fe1-4214-b251-a96e0106997a"
Name "Test Character"
DateCreated "2/12/2019"
CharPlayer 3821
Playable "true"
Nella mia vista (cshtml), ho il modello impostato su questo:
@model IEnumerable<Character>
Tuttavia, quando lo eseguo, ottengo questo errore:
InvalidOperationException: l'elemento del modello passato in ViewDataDictionary è di tipo 'Character', ma questa istanza ViewDataDictionary richiede un elemento del modello di tipo 'System.Collections.Generic.IEnumerable`1 [Character]'.
Quindi, come ottengo la mia visualizzazione per visualizzare un singolo oggetto Character (newCharacterObject) o come convertire "newCharacterObject" in ciò che la visualizzazione richiede?
Grazie!
Modifica: formattazione
Se hai solo bisogno di un modello di carattere, puoi semplicemente usare @model Character
nella parte superiore di cshtml
IEnumerable è usato per iterare attraverso una collezione di oggetti.