Salve, ho un problema con l'utilizzo del Html Helper Ajax.beginForm.
Quando viene caricata la pagina a seguito dell'action Index visualizzo il filtro per la ricerca, eseguò il submit e ottengo la webgrid.
Dalla griglia Webgrid eseguo le funzioni di paging ed order senza problemi, ad ogni azione viene eseguita l'action SearchResults.
Se eseguo nuovamente il submit del filtro di testata, mi viene ricaricata la webgrid ma ora se eseguo funzioni di paging oppure di order vendo che l'action Searchresult viene eseguita due volte e cosi via se eseguo un'altro submit dal filtro di testata la cosa si triplicla.
Come posso fare per evitare questo comportamento.
Index.cshtml
@model Portal.Web.ViewModels.DocTeFilterViewModel
@using (Ajax.BeginForm("SearchResults", "DocTe",
new AjaxOptions
{
InsertionMode = InsertionMode.Replace,
HttpMethod = "GET",
UpdateTargetId = "search-results",
LoadingElementId="loading",
LoadingElementDuration=100
}))
{
var ModelFilter = Model;
@Html.TextBoxFor(m => ModelFilter.descr)
<button id="btnfilter" type="submit"></button>
<br />
<div id="search-results">
</div>
<div id="loading" style="display:none">
Sto Caricando i Dati
</div>
}
SearchResultsPartial.cshtml
model PagedList<Portal.Web.ViewModels.DocTeViewModel>
@using Portal.Model;
@{
var grid = new WebGrid(
canPage: true,
rowsPerPage: Model.PageSize,
canSort: true,
ajaxUpdateContainerId: "grid");
grid.Bind(Model.Content, rowCount: Model.TotalRecords, autoSortAndPage: false);
@grid.GetHtml(htmlAttributes: new { id = "grid" }, // id for ajaxUpdateContainerId parameter
fillEmptyRows: false,
tableStyle: "table table-bordered table-hover",
mode: WebGridPagerModes.All,
columns: grid.Columns(
grid.Column("tipdoc", "tipdoc"),
grid.Column("descr", descr") ));
}
Controller
[HttpGet]
public ActionResult Index(DocTeFilterViewModel ModelFilter)
{
return View(ModelFilter);
}
[HttpGet]
public ActionResult SearchResults(DocTeFilterViewModel ModelFilter,
int page = 1, int pageSize = 5, string sort = "IDDocTe", string sortdir = "DESC")
{
try
{
... eseguo i filtri, le selezioni ... restituisco la PartialView
return PartialView("SearchResultsPartial", records);
}
catch (Exception e)
{
ModelState.AddModelError("",String.Format("Unable to search. Try again, and if the problem persists see your system administrator.", e.Message));
}
return PartialView("Error");
}