Criei uma View, baseada em um ViewModel, que contém vários componentes que se destinam a filtrar uma determinada entidade.
Tem campos de texto, dropdownlists e até um checkbox.
O View model tem nenhum campo Required. A única Annotation é de um campo de formato Data.
Seria para o usuário escolher prencher alguns campos e clicar no botão Filtrar.
O problema é que ele está fazendo validação. Se eu não preencher todos os campos ele fica no formulário e não encaminha o Post.
Por que está acontecendo a validação se não há nada no model que exija esse preenchimento?
Esse é o ViewModel:
public class FiltroDeProcessosViewModel
{
public IList<Processo> filtrados { get; set; }
public int ClienteID { get; set; }
public virtual Cliente Cliente { get; set; }
public SelectList Clientes { get; set; }
public string AdvogadoID { get; set; }
public virtual ApplicationUser Advogado { get; set; }
public SelectList Advogados { get; set; }
public int Pasta { get; set; }
public int TipoAcaoID { get; set; }
public virtual TipoAcao TipoAcao { get; set; }
public SelectList TiposAcao { get; set; }
public int TipoNaturezaID { get; set; }
public virtual TipoNatureza TipoNatureza { get; set; }
public SelectList TiposNatureza { get; set; }
public int FaseProcessoID { get; set; }
public virtual FaseProcesso FaseProcesso { get; set; }
public SelectList FasesProcesso { get; set; }
public int ForoProcessoID { get; set; }
public virtual ForoProcesso ForoProcesso { get; set; }
public SelectList ForosProcesso { get; set; }
public int JurisdicaoProcessoID { get; set; }
public virtual JurisdicaoProcesso JurisdicaoProcesso { get; set; }
public SelectList JurisdicoesProcesso { get; set; }
public Boolean ArquivoMorto { get; set; }
public int TipoPrazoID { get; set; }
public virtual TipoPrazo TipoPrazo { get; set; }
public SelectList TiposPrazo { get; set; }
[DataType(DataType.Date)]
public DateTime LimitePrazo { get; set; }
public int TipoDecisaoID { get; set; }
public virtual TipoDecisao TipoDecisao { get; set; }
public SelectList TiposDecisao { get; set; }
}
E esse é a View:
@model CBMMSapp.Models.Filtros.FiltroDeProcessosViewModel
@{
ViewBag.Title = "CBMMS app";
}
<h2>Filtrar processos</h2>
@using (Html.BeginForm("FiltroDeProcessos", "Processos", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
<h4>Selecione um ou mais dos filtros abaixo:</h4>
<div class="form-group">
@Html.LabelFor(model => model.Pasta, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Pasta, new { htmlAttributes = new { @class = "form-control" } })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.ClienteID, "Cliente", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("ClienteID", Model.Clientes, "Selecione um cliente", htmlAttributes: new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.AdvogadoID, "Advogado", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("AdvogadoID", Model.Advogados, "Selecione um responsável", htmlAttributes: new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.TipoNaturezaID, "Natureza", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("TipoNaturezaID", Model.TiposNatureza, "Selecione a natureza", htmlAttributes: new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.TipoAcaoID, "Tipo de ação", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("TipoAcaoID", Model.TiposAcao, "Selecione o tipo de ação", htmlAttributes: new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.FaseProcessoID, "Fase", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("FaseProcessoID", Model.FasesProcesso, "Selecione a fase do processo", htmlAttributes: new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.ForoProcessoID, "Foro", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("ForoProcessoID", Model.ForosProcesso, "Selecione o foro do processo", htmlAttributes: new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.JurisdicaoProcessoID, "Jurisdição", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("JurisdicaoProcessoID", Model.JurisdicoesProcesso, "Selecione a jurisdição do processo", htmlAttributes: new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.TipoDecisaoID, "Tipo de decisão", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("TipoDecisaoID", Model.TiposDecisao, "Selecione o tipo de decisão", htmlAttributes: new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.ArquivoMorto, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div class="checkbox">
@Html.EditorFor(model => model.ArquivoMorto)
</div>
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.TipoPrazoID, "Tipo de prazo", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("TipoPrazoID", Model.TiposPrazo, "Selecione o tipo de prazo", htmlAttributes: new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.LimitePrazo, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.LimitePrazo, new { htmlAttributes = new { @class = "form-control" } })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Filtrar" class="btn btn-default" />
</div>
</div>
</div>
}
@section scripts {
@Scripts.Render("~/bundles/jqueryval")
}