Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Монфрид
1213 / 1023 / 293
Регистрация: 07.03.2012
Сообщений: 3,243
Завершенные тесты: 2
1

Как сохранить изменения в бд после редактирования в View

22.07.2012, 15:48. Просмотров 2682. Ответов 7
Метки нет (Все метки)

Имеется бд на сервере. Реализованы классы Linq to sql для таблиц бд. Есть страница для редактирования записи:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
 
    <fieldset>
        <legend>help</legend>
 
        @Html.HiddenFor(model => model.idHelper)
 
        <div class="editor-label">
            @Html.LabelFor(model => model.helpText)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.helpText)
            @Html.ValidationMessageFor(model => model.helpText)
        </div>
 
        <div class="editor-label">
            @Html.LabelFor(model => model.timeAdded)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.timeAdded)
            @Html.ValidationMessageFor(model => model.timeAdded)
        </div>
 
        <div class="editor-label">
            @Html.LabelFor(model => model.category)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.category)
            @Html.ValidationMessageFor(model => model.category)
        </div>
 
        <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>
в контроллере есть код для редактирования:
C#
1
2
3
4
5
6
7
8
9
10
11
[HttpPost]
        public ActionResult Edit(help help)
        {
            if (!ModelState.IsValid)
                return View(help);
            
            
            context.SubmitChanges();
            return RedirectToAction("Index");
            
        }
но изменения не сохраняются, как правильно сделать сохранение?
Пробовал делать добавление записей: всё норм работает
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2012, 15:48
Ответы с готовыми решениями:

Не обновляется view после изменения $scope.model
Всем привет. У меня такая проблема. Есть страница на которой представлен небольшой список вещей....

vb.net не могу сохранить файл после редактирования
после открытия файла в picture box открываю его в mspaint для редактирывания, но при попытке его...

vb.net не могу сохранить файл после редактирования
после открытия файла в picture box открываю его в mspaint для редактирывания, но при попытке его...

сохранить изменения после :focus
Всем доброй ночи.Ребят не подскажите как сделать нормально,чтобы при вводе текста в поля, каждое...

Сохранить изменения после drag'n'drop
Здравствуйте.Собственно в теме весь вопрос.Как сохранить расположение елементов на страничке после...

7
Eugene22
_
2352 / 1225 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
22.07.2012, 15:53 2
C#
1
2
3
4
5
6
7
8
9
10
11
[HttpPost]
        public ActionResult Edit(help help)
        {
              if (ModelState.IsValid)
             {
            context.Entry(help).State = EntityState.Modified;
            context.SaveChanges();
            return RedirectToAction("Index");
              }
           return View(help);
        }
0
Монфрид
1213 / 1023 / 293
Регистрация: 07.03.2012
Сообщений: 3,243
Завершенные тесты: 2
22.07.2012, 16:03  [ТС] 3
Eugene22, да, я встречал уже этот код. Но у меня нет у context св-ва Entry. Имеются св-ва соответствующие таблицам в бд, и нет
C#
1
SaveChanges()
, только
C#
1
SubmitChanges()
0
Eugene22
_
2352 / 1225 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
22.07.2012, 16:06 4
Монфрид, а что в данном случае context - это класс, производный от DbContext?
0
22.07.2012, 16:06
Монфрид
1213 / 1023 / 293
Регистрация: 07.03.2012
Сообщений: 3,243
Завершенные тесты: 2
22.07.2012, 16:09  [ТС] 5
сделал вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        [HttpPost]
        public ActionResult Edit(help help)
        {
            
            if (!ModelState.IsValid)
                return View(help);
 
            var r = (from i in context.helps where i.idHelper == help.idHelper select i).First();
            r.helpText = help.helpText;
            r.category = help.category;
            r.timeAdded = help.timeAdded;
 
            context.SubmitChanges();
 
            return RedirectToAction("Index");            
        }
всё вроде работает, но если есть более комфортное решение - буду рад увидеть

Добавлено через 44 секунды
Eugene22, context - это System.Data.Linq.DataContext
0
Eugene22
_
2352 / 1225 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
22.07.2012, 16:11 6
Монфрид, ну вышеприведенное решение по-моему и было самым комфортным. Я не знаю, почему у тебя не работает. Может какие-то библиотеки не подключил или не так определил контекст данных.

Добавлено через 1 минуту
Цитата Сообщение от Монфрид Посмотреть сообщение
context - это System.Data.Linq.DataContext
нет, лучше создавать от DbContext и через EntityFramework
0
Монфрид
1213 / 1023 / 293
Регистрация: 07.03.2012
Сообщений: 3,243
Завершенные тесты: 2
22.07.2012, 16:32  [ТС] 7
Eugene22, я первый раз работаю с linq2sql. Создал linq To Sql Classes, перетащил туда таблицы из бд. Сохранил, и у меня появились классы соответствующие. Ещё у меня в классе dataContext появились такие методы:
C#
1
2
3
4
5
6
partial void InsertCategory(Category instance);
    partial void UpdateCategory(Category instance);
    partial void DeleteCategory(Category instance);
    partial void Inserthelp(help instance);
    partial void Updatehelp(help instance);
    partial void Deletehelp(help instance);
предполагается, что я их сам должен реализовать? а то я не до конца понимаю пока механизм работы
0
AlexandrVavilow
4 / 4 / 2
Регистрация: 06.07.2012
Сообщений: 95
22.07.2012, 20:29 8
Цитата Сообщение от Монфрид Посмотреть сообщение
сделал вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        [HttpPost]
        public ActionResult Edit(help help)
        {
            
            if (!ModelState.IsValid)
                return View(help);
 
            var r = (from i in context.helps where i.idHelper == help.idHelper select i).First();
            r.helpText = help.helpText;
            r.category = help.category;
            r.timeAdded = help.timeAdded;
 
            context.SubmitChanges();
 
            return RedirectToAction("Index");            
        }
всё вроде работает, но если есть более комфортное решение - буду рад увидеть

Добавлено через 44 секунды
Eugene22, context - это System.Data.Linq.DataContext
Все правильно сделать, но в общем если по правилам MVC, то создай в папке Model класс работы с даными, а в контроллере только вызывай методы этого класса, например вместо того что ты написал :

C#
1
2
3
4
5
6
7
8
9
10
11
12
[HttpPost]
        public ActionResult Edit(help help)
        {
            if (ModelState.IsValid)
            {
                DataManager db = new DataManager();
                db.SaveItem(help);
                return RedirectToAction("Index");  
            }
                return View(help);   
            
         }
Где SaveItem - метод класса DataManager

Если еще попрофессиональнее то к Классу DataManager прикручивается класс *Слой сервиса* который позволяет при изминении типа БД или переходя с Linq на EF не переписывать весь код в каждом контроллере а работать только из самим класом DataManager

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
22.07.2012, 20:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2012, 20:29

Сохранить изменения в таблице после удаления записей
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;...

Сохранить таблицу базы данных после изменения
Добрый день. Помогите с кодом, пожалуйста. Нужно очень срочно. После удаления из таблицы DB не...

Как создать форму для редактирования и изменения документов на сайте?
как создания форму для редактирования и изменения докементов на сайте что бы каждый желающий мог...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru