Я изучаю MVC5, и я пытаюсь реализовать простую страницу для добавления и отображения учащихся. Вопрос занимает много места, но является чрезвычайно простым.MVC 5 Ajax Issue
Так вот модель:
public class Student
{
public int StudentId { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
Вот методы действий:
public ActionResult Index()
{
return View(db.Students.ToList());
}
public ActionResult Create()
{
return PartialView();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Student student)
{
if (ModelState.IsValid)
{
db.Students.Add(student);
db.SaveChanges();
return PartialView();
}
return PartialView(student);
}
Здесь вы вид Родитель: Index.cshtml
@model IEnumerable<MVCAjax.Models.Student>
<h2>Index</h2>
<div class="row" id="myformbase">
<div class="col-md-6">
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.Age)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Age)
</td>
</tr>
}
</table>
</div>
<div class="col-md-6">
@Html.Action("Create")
</div>
</div>
Вот вид ребенка: Create.cshtml
@model MVCAjax.Models.Student
@using (Ajax.BeginForm("Create", "Student", new AjaxOptions { UpdateTargetId = "myform" }))
{
<div id="myform">
<h2>Create</h2>
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Student</h4>
<hr />
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.Name, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Age, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Age)
@Html.ValidationMessageFor(model => model.Age)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
</div>
}
Теперь у меня есть несколько вопросов:
- Когда я ввожу имя студента и возраст и нажмите кнопку Создать, текстовые поля все еще отображают значения, а не очищаются. Данные сохраняются в db.
- Что делать, если я хочу обновить список в левой части, как только будет добавлен новый ученик.
У меня есть небольшой опыт MVC4 и там, если я передать (в AjaxOptions) Идентификатор DIV, который содержал оба ребенка дивы (в моем случае «myformbase»), то он используется, чтобы обновить его. Но не знаю, почему это не работает в MVC5.
Спасибо. Это решило мою первую проблему. Любая идея о втором? –