Я знаю, что этот вопрос задавали много раз, и я пробовал все решения, которые мог найти, но я все еще не могу заставить свою форму Ajax обновить DIV, а не перенаправить на метод действия, например (Local..Home/Index_AddUser). Я сократил код, так как в противном случае он очень длинный:
Просмотреть
@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>
Контроллер пользовательских деталей
[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");
}
_Макет
@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>
Конфигурация пакета
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*"));
Заранее спасибо, и я новичок в Stack и MVC, поэтому, если вам нужна дополнительная информация, спрашивайте :)
@Ajax.BeginForm
или не добавили все сценарии. Попробуйте также использовать одну форму с именем контроллера, также проверьте вкладку сети инструмента разработчика, если вы добавили все необходимые скрипты и их загрузку, добавьте httpmethod и insertionmode в параметры ajax. - person Chaitanya Gadkari   schedule 22.07.2015@using (Ajax.BeginForm("Index_AddUser", new AjaxOptions{HttpMethod = "POST", UpdateTargetId = "userList", InsertionMode = InsertionMode.Replace}))
- person hjardine   schedule 22.07.2015