Eai galera, blz?
Estou com o problema de cair em uma exception da qual não consigo solucionar. O erro diz 'Object reference not set to an instance of an object.' Porém, o mesmo carrega o ComboBox no form com todos os dados certos, contudo, na hora de 'cadastar um usuário' ele retorna este erro.
System.NullReferenceException occurred
HResult=0x80004003
Message=Object reference not set to an instance of an object.
Source=<Cannot evaluate the exception source>
StackTrace:
at ASP._Page_Views_Usuario_Form_cshtml.Execute() in F:\Users\Gustavo Toledo\Documents\Visual Studio 2017\Projects\ASP\WebApplication_ezconet\WebApplication_ezconet\Views\Usuario\Form.cshtml:line 31
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
at System.Web.WebPages.StartPage.RunPage()
at System.Web.WebPages.StartPage.ExecutePageHierarchy()
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance)
at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer)
at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
Estes são os códigos relacionados:
UsuarioController
public class UsuarioController : Controller
{
public ActionResult Form()
{
SexoDAO sexoDao = new SexoDAO();
IList<Sexo> sexo = sexoDao.Lista();
ViewBag.Sexo = sexo;
return View(sexo);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Adiciona(Usuario usuario)
{
if (ModelState.IsValid)
{
UsuarioDAO dao = new UsuarioDAO();
dao.Adiciona(usuario);
return RedirectToAction("Index");
}
else
{
ModelState.AddModelError("Usuario.Valores", "Dados inválidos! Verifique os novamente.");
ViewBag.Usuario = usuario;
return View("Form");
}
}
}
Utilizando esta model :
Usuario
public class Usuario
{
public int UsuarioId { get; set; }
[StringLength(200)]
public String Nome { get; set; }
public DateTime DataNascimento { get; set; }
[StringLength(100)]
public String Email { get; set; }
[StringLength(30)]
public String Senha { get; set; }
[Range(0,1, ErrorMessage = "Valor do status inválido!")]
public int Ativo { get; set; }
[Range(1,5, ErrorMessage ="Sexo não definido no BD!")]
public int SexoId { get; set; }
/*
[ForeignKey("SexoId")]
public virtual Sexo Sexo { get; set; }
*/
}
Neste Form, onde o Visual Studio captura a exception (na linha do @foreach), seja utilizando uma ViewBag ou Model (como está o código):
Form (View Usuario)
@model IList<WebApplication_ezconet.Models.Sexo>
<div class="col">
<div style="margin-left: -11%; width: 90%;">
<label>Genero: @Html.ValidationMessage("Usuario.Genero")</label>
<select id="html_sexo" class="form-control">
<option id="#" name="#" class="dropdown-item text-muted" selected="selected" value="0">Selecione um</option>
@foreach (var sexo in Model)
{
<option id="Usuario.SexoId" name="Usuario.SexoId" class="dropdown-item" value="@sexo.SexoId">@sexo.Descricao</option>
}
</select>
</div>
</div>
Caso ajude, estou utilizando a Entity Framework para fazer o CRUD no BD, que até então está tudo ok.
Estou esquecendo algum detalhe? Algo? Help ai.