Для примера использую подход database first. Итак, сгенерил по модели, контроллер и представления.
Суть такая, я хочу изменять только одно поле из таблицы (chekbox) в представлении index, не заходя при этом в представление edit.
Начал с того, что добавил второй метод index с фильтром httppost.
Для начала решил явно передавать номер(чтобы убедиться, что получится) указывая в параметр поиска id = 92.
private NewMainDBForCRUDEntities db = new NewMainDBForCRUDEntities();
public ActionResult Index()
{
return View(db.NewLetters.ToList());
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index([Bind(Include = "Id_letter,Email_letter,Name_letter,Phone_letter,Descript_letter,Date_letter,Check_letter")] NewLetter newLetter)
{
newLetter = db.NewLetters.Find(92);
if (ModelState.IsValid)
{
db.Entry(newLetter).State = EntityState.Modified;
db.SaveChanges();
return View(db.NewLetters.ToList());
}
}
Чтобы можно было менять значение с index делаю так, меняю хелпер с
@Html.DisplayFor(model => item.Check_letter)
на
@Html.CheckBoxFor(model => item.Check_letter, new { id = item.Id_letter })
И делаю скорее всего это неправильно, т.к при дебаге все равно новое значение не считывает
Теперь можно изменять значение chexbox`а из индекса
Само представление
@model IEnumerable<CRUD.Models.NewLetter>
<div id="upd_letter_list">
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Id_letter)
</th>
<th>
@Html.DisplayNameFor(model => model.Email_letter)
</th>
<th>
@Html.DisplayNameFor(model => model.Name_letter)
</th>
<th>
@Html.DisplayNameFor(model => model.Phone_letter)
</th>
<th>
@Html.DisplayNameFor(model => model.Descript_letter)
</th>
<th>
@Html.DisplayNameFor(model => model.Date_letter)
</th>
<th>
@Html.DisplayNameFor(model => model.Check_letter)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
using (Ajax.BeginForm("Index", new { id = item.Id_letter }, new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "upd_letter_list" }))
{
@Html.AntiForgeryToken()
<tr>
<td>
@Html.DisplayFor(modelItem => item.Id_letter)
</td>
<td>
@Html.DisplayFor(modelItem => item.Email_letter)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name_letter)
</td>
<td>
@Html.DisplayFor(m => item.Phone_letter@*, new { id = item.Id_letter }*@)
</td>
<td>
@Html.DisplayFor(modelItem => item.Descript_letter)
</td>
<td>
@Html.DisplayFor(modelItem => item.Date_letter)
</td>
<td>
@Html.CheckBoxFor(model => item.Check_letter, new { id = item.Id_letter })
</td>
<td>
<input type="submit" value="edit" class="btn btn-default" />
</td>
</tr>
}
}
</table>
В общем итог такой, ajax срабатывает и страница обновляется только в конкретном контейнере как и надо.
Но вот данные из index не могу никак передать, нужна помощь.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Есть стандартная таблица пользователей фреймворка Identity 22
Пытаюсь реализовать сервер за NAT с помощью STUNВкратце, делаю так: