Я использую MVC5, и я хочу, чтобы найти результат и остаться на той же странице, вот мой метод в мой контроллер (LiaisonsProjetsPPController), что делать операцию поиска:поиск MVC оставаться той же странице
public ActionResult IndexAjoutML(int id, string SearchString)
{
PartiesPrenantesEntities db = new PartiesPrenantesEntities();
ViewBag.idProjet = id;
ViewBag.searchString = SearchString;
IQueryable<ActivitesPP> qry = this.db.ActivitesPP.Intersect(from item in this.db.LiaisonsProjetsPP where item.idProjet == id select item.ActivitesPP).Include(model => model.Activites.CatActivites);
var act = from s in db.CatActivites
select s;
if (!String.IsNullOrEmpty(SearchString))
return PartialView("~/Views/ActivitesPP/IndexAjoutProjet.cshtml", this.db.ActivitesPP.Where(s => s.PartiesPrenantes.nomPP.Contains(SearchString)).Except(qry));
else
return PartialView("~/Views/ActivitesPP/IndexAjoutProjet.cshtml", this.db.ActivitesPP.Except(qry));
}
Тогда на мой взгляд (Просмотров/ActivitesPP/IndexAjoutProjet) у меня есть формы поиска и DIV результата отображения:
@using (Ajax.BeginForm("IndexAjoutML", "LiaisonsProjetsPP", FormMethod.Post,
new AjaxOptions
{
InsertionMode = InsertionMode.Replace,
HttpMethod = "POST",
UpdateTargetId = "search-results"
}, new { @id = "searchFormPP" }))
{
<p>
<label>Partie prenante: </label> @Html.TextBox("SearchString")
<input id="inputRecherche" name="SearchString" type="submit" value="Rechercher" />
</p>
}
<div id="search-results">
@{foreach (var catactivite in Model.GroupBy(model => model.Activites.CatActivites))
{
String couleurCategorie = catactivite.Key.couleurCategorie;
String couleurTexte = CustomHelpers.GetForegroundColor(couleurCategorie);
//Image de la partie prenante
<div class="panel-heading unhide" style="background-image: none; color: @couleurTexte; background-color: @couleurCategorie; padding: 2px;">
</div>
foreach (var pp in catactivite)
{
String nomPP = (pp.idPP == null ? "Inconnu" : pp.PartiesPrenantes.nomPP);
String dateAffichee;
String imgPP = "../../Images/Profils/" + (pp.PartiesPrenantes.imgPP ?? "avatar.png");
if (pp.finActivite == null)
{
dateAffichee = "Depuis le " + String.Format("{0:d/MM/yyyy}", pp.debutActivite);
}
else
{
dateAffichee = "Depuis le " + String.Format("{0:d/MM/yyyy}", pp.debutActivite) + ", jusqu'au " + String.Format("{0:d/MM/yyyy}", pp.finActivite);
}
<div class="panel panel-primary">
<div class="panel-heading unhide" style="color: @couleurTexte; background-color: @couleurCategorie;">
<div style="float: left">
<img class="imgPP img-circle" src="@(imgPP)" />
</div>
<h5>@pp.Activites.libelleActivite (@Html.Raw(pp.idLieu == 999 ? "National" : pp.Lieux.nomLieu))</h5>
<h6>@pp.PartiesPrenantes.nomPP</h6>
</div>
<div class="panel-body hiddenPart">
@if (pp.idPP != null)
{
<label>Commentaire</label>
<p>@(pp.commentaireActivite ?? "Pas plus de détails..")</p>
@Html.Action("CreateForm", "LiaisonsProjetsPP", new { idActivite = pp.idActivite, idProjet = ViewBag.idProjet })
}
</div>
</div>
}
}
}
</div>
}
else
{
@Html.Raw("<p>Aucune partie prenante disponible..")
@Html.Raw("(attention: pour être ajoutée, une partie prenante doit posséder au moins une activité référencée..)</p>")
}
на мой взгляд, я называю свой метод поиска (Просмотров/Projets/Детали): @{ Html.RenderAction("IndexAjoutML", "LiaisonsProjetsPP", new { idProjet = Model.idProjet, searchString = Model.searchString }); }
Поиск работы, но он перенаправляет меня на другую страницу http://localhost:49612/LiaisonsProjetsPP/IndexAjout/1 вместо того, чтобы оставаться на этой странице http://localhost:49612/Projets/Details/1.
Я добавлю это в свой код , но он все еще не работает – spykeez
Установили ли вы пакет jQuery Unobtrusive, чтобы у вас был файл? Вы можете получить его через NuGet здесь: https://www.nuget.org/packages/Microsoft.jQuery.Unobtrusive.Ajax/ Также убедитесь, что он указан по указанному вами пути. Вы используете комплектацию? –
yes Я загрузил последнюю версию jQuery Ненавязчивый и добавил ее в bundleConfig: bundles.Add (новый ScriptBundle ("~/bundles/jqueryval"). Включить ( "~/Scripts/jquery.unobtrusive *", "~/Сценарии/jquery.validate * ")); – spykeez