#asp.net-mvc-3 #entity-framework
#asp.net-mvc-3 #entity-framework
Вопрос:
ОКОНЧАТЕЛЬНОЕ РЕДАКТИРОВАНИЕ Если вы смотрите на этот вопрос, пожалуйста, ознакомьтесь с ответом, который я опубликовал ниже. Первоначальная проблема была не с EF, а с моей реализацией jQuery.
РЕДАКТИРОВАТЬ: я подтвердил, что это происходит только в IE (в частности, IE 7). Я не вижу такого же поведения в Chrome. Я еще не тестировал Firefox, но мы не поддерживаем FF в нашей среде, поэтому я не так беспокоюсь об этом.)
Прежде чем я опубликую кучу кода, я просто хотел опубликовать это, чтобы узнать, сталкивался ли кто-нибудь еще с чем-то подобным, и если да, то в чем их виновник.
У меня есть код в проекте MVC, который создает новую сущность. Код работает так, как ожидалось, в моей локальной среде. Однако, когда я отправляю код в нашу среду тестового сервера, тот же код создает две записи при сохранении.
Я проверил, что схемы базы данных идентичны, поэтому я устранил это как возможную причину.
Кто-нибудь еще когда-либо испытывал что-то подобное? Если да, что вы сделали, чтобы устранить проблему?
Спасибо
Комментарии:
1. Нет, у меня нет. Можете ли вы опубликовать код, в котором вы сохраняете? Вы уверены, что отправляете тот же код на тестовый сервер? Локально какую БД вы используете? Как насчет на тестовом сервере?
2. Я подтвердил, что код выталкивается правильно. Я использую SQL Server 2008 как локально, так и в тестовой среде. Базы данных физически расположены на двух разных серверах, но схемы идентичны. Я только что узнал, что дублирование происходит только в IE.
3. Я только что запустил Fiddler и подтвердил, что IE отправляет один и тот же POST-запрос дважды! ДОХ!! <facepalm>
4. Не могли бы вы опубликовать свою модель представления и javascript (если есть)?
Ответ №1:
Я, наконец, отследил проблему до ошибки в некотором javascript. Проблема не имела ничего общего с Entity Framework или MVC. У меня есть некоторый код jQuery, который помогает мне добавлять значки к кнопкам отправки, а в IE это приводило к тому, что отправка выполнялась дважды.
На случай, если кому-то интересно, вот оскорбительный код:
$('input[type="submit"]').each(function () {
$(this).hide().after('<button>').next().button({
icons: { primary: $(this).attr('icon') },
label: $(this).val()
}).click(function (event) {
event.preventDefault();
$(this).prev().click();
return false;
});
});
Это не вызвало проблем в Chrome, но в IE кнопки отправки запускались дважды. Чтобы исправить это, я добавил onclick=»return false;» к моим тегам ввода, и проблема исчезла.