Я пытаюсь обновить частичный вид внутри представления при отправке формы. Тем не менее, всякий раз, когда я пытаюсь, он просто отображает частичное представление как нормальное представление. Может ли кто-нибудь сказать мне, что я делаю неправильно?Оказание частичного представления внутри представления с использованием AJAX
Контроллер:
public ActionResult ChangeHeatName(string heatName, string updatedHeat)
{
string user = User.Identity.Name;
HomeModel H = new HomeModel();
H.ChangeHeatName(heatName, updatedHeat, user);
ChemViewModel mySlagViewModel = new ChemViewModel();
mySlagViewModel = H.QueryResults(heatName);
return PartialView("PartialChemAnalysis", mySlagViewModel);
}
Частичная форма вида (содержащаяся в частичном виде, не является основным вид):
@using (Ajax.BeginForm("ChangeHeatName", "Home", new AjaxOptions(){UpdateTargetId = "chemDiv" InsertionMode = InsertionMode.Replace}))
{
<section>
Heat Name:<input type="text" name="heatName" value="@Html.ValueFor(x => x.heatname)" style ="width:100px"/>
Change to:<input type="text" name="updatedHeat" value="" style="width: 100px" />
<input type="submit" name="ChangeHeatName" value="Change" />
</section>
}
Индексных где частичный вид визуализируются:
@if(ViewBag.SearchKey == null)
{
<div class="content-wrapper">
<hgroup class="title">
<h1>@HttpContext.Current.User.Identity.Name</h1>
<h2>@ViewBag.Message</h2>
</hgroup>
</div>
}
@using (Html.BeginForm("Index", "Home", "POST"))
{
<div class="searchField">
<input type="text" class="search-query" name="heatSearch" placeholder="Search">
<button class="btn btn-success" type="submit">Search</button>
<br />
@if (ViewBag.AverageSuccessful == true)
{
<input type="text" name="AvgConfirmation" class="search-query" value="Average Submitted Successfully" width:"400px" placeholder="Search" />
}
</div>
}
@if(ViewBag.SearchKey != null)
{
<div>
<div id ="chemDiv">
@Html.Action("PartialChemAnalysis", "Home", (string)ViewBag.SearchKey)
</div>
<div id ="slafDiv">
@Html.Action("PartialSlagView", "Home", (string)ViewBag.SearchKey)
</div>
</div>
}
Контроллер индекса, который передает SearchKey:
[HttpPost]
public ActionResult Index(string heatSearch)
{
ViewBag.SearchKey = heatSearch;
return View();
}
Форма отправляет запрос на действие частичного просмотра ('ChangeHeatName'). Все это действие возвращает частичный вид, поэтому вы не видите полный вид. Вы должны отправить 'GET' формы в действие, которое возвращает полный вид, и вызвать частичный вид из этого представления. –
Я бы также добавил InsertionMode.Replace в качестве следующего параметра ваших ajaxoptions. Поэтому он читал бы: новый AjaxOptions {UpdateTargetId = "chemDiv", InsertionMode = InsertionMode.Replace} –
@AndreCalil Спасибо за совет. Я попытался вызвать полный вид, который отображает частичное представление. Таким образом, мое заявление о возврате выглядело как return View («Index», heatName) Но он просто вернул меня к этому виду без частичного визуализированного представления. –