Я знаю, что этот вопрос задан очень часто, и я попытался найти любое решение, которое я могу найти, но я до сих пор не могу получить форму Ajax для обновления DIV, а затем перенаправление на Action Action, например (Local ..Home/Index_AddUser). Я сократил код, как это очень долго иначе:Переадресация формы AJAX вместо обновления целевого
Посмотреть
@using (Ajax.BeginForm("Index_AddUser", new AjaxOptions{UpdateTargetId = "userList"}))
{
@Html.AntiForgeryToken()
//This summarises user input and displays error messages
@Html.ValidationSummary()
<div id="aParent">
<div align="justify">
<div>@Html.LabelFor(model => model.UserLogin)</div>
<div>@Html.EditorFor(model => model.UserLogin, new { id = "UserLogin" })</div>
</div>
//Same as above repeated with different values
<div>
<div><input type="submit" value="Add User" id="UserCreate" /></div>
</div>
</div>
}
<div id="userList">
@{Html.RenderAction("UserListControl");}
</div>
Частичный вид
@model IEnumerable<WebApplication1.Models.UserDetail>
<table>
<!-- Render the table headers. -->
<thead>
<tr>
//Table Headers matching LabelFor in VIew
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
//Table Rows from db
</tr>
}
</tbody>
</table>
UserDetailsController
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index_AddUser([Bind(Prefix = "NewUserDetails")]UserDetail model)
{
Manager manager = new Manager();
if (model != null)
{
manager.SaveUser(model.UserID, model.UserLogin, model.FirstName, model.Surname, model.Email, model.Active);
return PartialView("UserListControl");
}
return PartialView("UserListControl");
}
_layout
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
Web.config
<appSettings>
<add key="webpages:Version" value="3.0.0.0"/>
<add key="webpages:Enabled" value="false"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
BundleConfig
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
"~/Scripts/jquery-ui-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
Спасибо заранее и я новичок в стек и MVC, так что если вам нужна больше информации спрашивайте :)
Обычно он перенаправляется, если вы не использовали правильную перегрузку '@Ajax.BeginForm', или вы не добавили все сценарии. Попробуйте использовать одну форму с именем контроллера, также проверьте сетевую вкладку инструмента разработчика, если вы добавили все необходимые сценарии и свою загрузку, добавьте httpmethod и insertionmode в параметры ajax. –
@ChaitanyaGadkari Я сделал это: '@using (Ajax.BeginForm («Index_AddUser», новый AjaxOptions {HttpMethod = "POST", UpdateTargetId = "userList", InsertionMode = InsertionMode.Replace})) ' – hjardine
@ChaitanyaGadkari Он по-прежнему перенаправляется на новую страницу – hjardine