Ajax ASP.NET MVC

315
04 апреля 2017, 09:16

Для примера использую подход 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 не могу никак передать, нужна помощь.

READ ALSO
Отразить Excel на класс

Отразить Excel на класс

Допустим, есть Excel и класс, который содержит в себе поля из Excel

225
Ошибка входа при разных полях Email и UserName

Ошибка входа при разных полях Email и UserName

Есть стандартная таблица пользователей фреймворка Identity 22

204
Реализация UDP сервера за NAT с помощью STUN

Реализация UDP сервера за NAT с помощью STUN

Пытаюсь реализовать сервер за NAT с помощью STUNВкратце, делаю так:

345
Imagelist неправильная работа

Imagelist неправильная работа

Пишу для себя небольшую программкуПоявилась проблема с imageList

208