I'm having some trouble posting the value that I have in a BeginForm
to the controller I got this error:
"There is no ViewData item of type 'IEnumerable' that has the key 'TipoDespesa'."
I'm kinda new in Asp.net Mvc and I don't know how to solve this. I did this:
model:
@using (Html.BeginForm())
{
<div class="form-group">
<a href="@Url.Action("Create", "Despesas")" class="btn btn-danger" data-toggle="tooltip" title="Adiciona uma despesa" style="float: left;">
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
</a>
</div>
<div class="form-group col-md-offset-1">
<label class="control-label">Tipo de despesa</label>
@Html.DropDownList("TipoDespesa", (SelectList)ViewData["TipoDespesa"], "Todos", htmlAttributes: new { @class = "form-control" })
</div>
<div class="form-group"style="padding-left:20px">
<label class="control-label">Data</label>
<input type="date" class="form-control" name="pesquisa" />
</div>
<div class="form-group">
<button type="submit" class="btn btn-default" data-toggle="tooltip" title="Pesquisar por data"><span class="glyphicon glyphicon-search"></span></button>
</div>
}
Controller where i fill the dropdown:
public ActionResult Index()
{
var userId = User.Identity.GetUserId();
var despesas = db.Despesas.Include(d => d.TipoDespesa).Include(d => d.TipoPagamento).Where(d => d.ApplicationUserId == userId);
ViewBag.TipoDespesa = new SelectList(db.TipoDespesas, "TipoDespesaId", "TipoDespesaNome");
return View(despesas.ToList());
}
Controller where i execute the query
public ActionResult Index(string pesquisa,string tipoDespesa)
{
var userId = User.Identity.GetUserId();
var resultado = from r in db.Despesas.Include(r => r.TipoDespesa).Include(r => r.TipoPagamento).Where(r => r.ApplicationUserId == userId)
select r;
if (!String.IsNullOrEmpty(pesquisa))
{
DateTime d = Convert.ToDateTime(pesquisa);
resultado = resultado.Where(r => r.Data == d);
}
if(pesquisa != "Todos")
{
resultado.Where(r => r.TipoDespesa.TipoDespesaNome == pesquisa);
}
return View(resultado);
}