ASP.NET MVC 3 JQuery POST и GET - частичные представления не обновляются должным образом - PullRequest
1 голос
/ 24 ноября 2011

РЕДАКТИРОВАТЬ: я обнаружил, что проблема заключается в том, что мой сервис WCF получает грязные чтения.Пожалуйста, смотрите мой другой пост.Я все равно буду благодарен за любые советы по поводу того, что я могу улучшить в этом посте (например, простая орфографическая ошибка в моем JS или лучший способ обновить частичное представление).

Другой пост: Linq toSQL - Грязные чтения после обновления - Служба WCF

РЕДАКТИРОВАТЬ: Хорошо, я сузил до проблемы в веб-службе.Я написал небольшое приложение, которое использует мою справочную службу для чтения и обновления Locations.Иногда, когда я читаю местоположение, оно меняется на старое имя, и я получаю сообщение об ошибке ChangeConflictException: строка не найдена или не изменена.

Хорошо, в основном у меня есть представление MVCс формой и 2 частичными представлениями (раскрывающийся список и дерево расширений DevExpress MVC).Когда пользователь щелкает узел, он вызывает JS-функцию на стороне клиента, которая отправляет серверу сообщение Ajax POST, получает сведения об узле (из результата JSON) и заполняет форму.

Когда пользователь щелкает'Submit / Save', другая функция JS вызывается, и она также делает POST Ajax на сервер, передавая информацию об узле.Когда эта запись возвращается с результатом JSON, на сервер отправляется запрос GQ JQuery.Он получает частичное представление в виде строки html, а затем заменяет TreeView новым HTML.

Кажется, что все это работает, за исключением того, что если я изменяю имя узла с Node1 на Node2 на Node3, я иногда получаю Node1в TreeView, Node3 в DropDown и Node2 в форме, когда я нажимаю на этот «Node1» в TreeView.Все же это все из базы данных, которая имеет правильную информацию.И каждый раз, когда на Узле щелкают или сохраняются, Модель обновляется с использованием самых последних данных из базы данных.Когда я проверяю код позади, иногда эта обновленная модель неверна (например, говорит Node2 вместо Node3).

Почему это происходит?Я попытался очистить кеш браузера, добавив атрибуты без кеша в мой контроллер (из других вопросов о переполнении стека).Я понятия не имею, что происходит!Иногда, если я продолжаю нажимать кнопку «Обновить» на странице, дерево и раскрывающийся список меняются на предыдущие значения (например, Node1)!

Примечание: Node == Location == Unit (таблица / сущность БД, с которой я работаю).

Примечание: в базе данных есть триггер в расположении (узлах дерева).

Примечание: сервер использует WCF для связи с базой данных.

Примечание: .Using для службы - это расширение, которое обеспечивает правильное закрытие клиента службы.

Редактировать: Удален код по запросу моего коллеги.

Ответы [ 2 ]

1 голос
/ 24 ноября 2011

Если вы скопировали и вставили js, я думаю, что эта строка неправильная:

contentType: "application/json; chartset=utf-8",

Должно быть:

contentType: "application/json; charset=utf-8",

Мне не сразу понятно, сломается ли это, чтоВы пытаетесь сделать.

0 голосов
/ 01 декабря 2011

Я решил это.Это было вызвано кэшированием на карте структуры, которое стало очевидным только при использовании WCF (из-за кэширования WCF).

Пожалуйста, смотрите мой другой пост: Linq to SQL - Грязные чтения после обновления - Служба WCF

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...