Usuário com melhor resposta
Erro ao carregar View criada com base em Classe de Modelo

Pergunta
-
Boa noite,
Gerei a seguinte View com base em minha classe de modelo e meu contexto:
@ModelType DevelopersOnLine.com.br.Usuario @Code ViewData("Title") = "CadastroUsuario" End Code <h2>CadastroUsuario</h2> @Using (Html.BeginForm()) @Html.AntiForgeryToken() @<div class="form-horizontal"> <h4>Usuario</h4> <hr /> @Html.ValidationSummary(True, "", New With { .class = "text-danger" }) <div class="form-group"> @Html.LabelFor(Function(model) model.Nome, htmlAttributes:= New With { .class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(Function(model) model.Nome, New With { .htmlAttributes = New With { .class = "form-control" } }) @Html.ValidationMessageFor(Function(model) model.Nome, "", New With { .class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(Function(model) model.Email, htmlAttributes:= New With { .class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(Function(model) model.Email, New With { .htmlAttributes = New With { .class = "form-control" } }) @Html.ValidationMessageFor(Function(model) model.Email, "", New With { .class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(Function(model) model.NomeUsuario, htmlAttributes:= New With { .class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(Function(model) model.NomeUsuario, New With { .htmlAttributes = New With { .class = "form-control" } }) @Html.ValidationMessageFor(Function(model) model.NomeUsuario, "", New With { .class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(Function(model) model.Senha, htmlAttributes:= New With { .class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(Function(model) model.Senha, New With { .htmlAttributes = New With { .class = "form-control" } }) @Html.ValidationMessageFor(Function(model) model.Senha, "", New With { .class = "text-danger" }) </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <input type="submit" value="Create" class="btn btn-default" /> </div> </div> </div> End Using <div> @Html.ActionLink("Back to List", "Index") </div> <script src="~/Scripts/jquery-1.10.2.min.js"></script> <script src="~/Scripts/jquery.validate.min.js"></script> <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
Porém, a view apresenta o seguinte erro:
The model item passed into the dictionary is of type 'System.Data.Entity.DbSet`1[DevelopersOnLine.com.br.Usuario]', but this dictionary requires a model item of type 'DevelopersOnLine.com.br.Usuario'.
Como posso resolver este problema?
Segue abaixo minha classe de modelo:
Imports System.ComponentModel.DataAnnotations Imports System.ComponentModel.DataAnnotations.Schema <Table("usuario")> Public Class Usuario <Key> <Required> <Column("id_usuario")> Public Property Id_usuario As Integer <Column("nome")> Public Property Nome As String <Column("e-mail")> Public Property Email As String <Column("login")> Public Property NomeUsuario As String <Column("senha")> Public Property Senha As String End Class
E minha classe de contexto:
Public Class DevelopersContext Inherits DbContext Public Property Usuarios As DbSet(Of Usuario) End Class
Respostas
-
Marcio,
Na sua action você retorna uma coleção de usuários, já no código de sua view você indica o tipo de sua model como sendo DevelopersOnLine.com.br.Usuario, ou seja, apenas um objeto.
No formulário de cadastro, ao meu ver, você nem precisa de enviar um objeto do tipo Usuario. Então tente alterando o código de sua action para apenas:
Imports System.Web.Mvc Namespace Controllers Public Class CadastroUsuarioController Inherits Controller ' GET: CadastroUsuario Function CadastroUsuario() As ActionResult Return View() End Function End Class End Namespace
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".
Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".
- Marcado como Resposta Marcio Nogueira Cardoso Pinto terça-feira, 25 de outubro de 2016 13:12
Todas as Respostas
-
Como está o código da action que renderiza esta view?
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".
Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".
-
Segue o código de geração da View:
Imports System.Web.Mvc Namespace Controllers Public Class CadastroUsuarioController Inherits Controller ' GET: CadastroUsuario Function CadastroUsuario() As ActionResult Dim usuarios = New DevelopersContext().Usuarios Return View("CadastroUsuario", usuarios) End Function End Class End Namespace
-
Marcio,
Na sua action você retorna uma coleção de usuários, já no código de sua view você indica o tipo de sua model como sendo DevelopersOnLine.com.br.Usuario, ou seja, apenas um objeto.
No formulário de cadastro, ao meu ver, você nem precisa de enviar um objeto do tipo Usuario. Então tente alterando o código de sua action para apenas:
Imports System.Web.Mvc Namespace Controllers Public Class CadastroUsuarioController Inherits Controller ' GET: CadastroUsuario Function CadastroUsuario() As ActionResult Return View() End Function End Class End Namespace
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".
Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".
- Marcado como Resposta Marcio Nogueira Cardoso Pinto terça-feira, 25 de outubro de 2016 13:12
-