Я новичок в MVC и пытаюсь реализовать то, что, как я ожидаю, будет обычной проблемой.У меня есть простая поисковая форма, которую я хочу внедрить на каждой странице сайта.Я хочу, чтобы этот раздел содержал свой собственный код, чтобы мне не приходилось дублировать его на каждой странице.
До сих пор я мог сделать это, вызвав действие рендеринга на странице шаблона.Действие рендеринга заполняет форму быстрого поиска.Когда я отправляю форму, я могу проверить форму, однако я не нашел способа повторно отобразить ту же страницу с информацией проверки.Я бы предпочел способ, который бы просто обновлял область формы, но я бы принимал полный постбэк, пока страница отображается заново.
Вызов шаблона визуализации
@{Html.RenderAction("Display", "QuickSearch");}
ActionController
[HttpPost]
public ActionResult Submit(QuickSearchModel qsModel)
{
if (!ModelState.IsValid)
{
return PartialView(qsModel);
}
//Perform redirect
}
[ChildActionOnly]
public ActionResult Display()
{
//populate model
return View(qsModel);
}
Просмотр быстрого поиска
<div>
@using (Html.BeginForm("Submit", "QuickSearch"))
{
@Html.ValidationSummary(true)
@Html.LabelFor(m => m.Destination)@Html.EditorFor(m => m.Destination)@Html.ValidationMessageFor(m => m.Destination)<br />
@Html.LabelFor(m => m.ArrivalDate)@Html.EditorFor(m => m.ArrivalDate)@Html.ValidationMessageFor(m => m.ArrivalDate)
@Html.LabelFor(m => m.DepartureDate)@Html.EditorFor(m => m.DepartureDate)@Html.ValidationMessageFor(m => m.DepartureDate)<br />
@Html.LabelFor(m => m.Adults)@Html.DropDownListFor(model => model.Adults, new SelectList(Model.AdultsSelectOptions, "value", "text", Model.Adults))<br />
@Html.LabelFor(m => m.Children)@Html.DropDownListFor(model => model.Children, new SelectList(Model.ChildrenSelectOptions, "value", "text", Model.Children))<br />
<input id="qsSubmit" name="qsSubmit" type="submit" value="Submit" />
}
</div>
Заранее благодарим за любую помощь!