Сетка MVC3 и MVCContrib - HTML-код создается по-разному в разных браузерах

Я столкнулся с чем-то странным с сеткой MVCContrib. Используя Chrome (или FireFox), когда я перехожу к определенному представлению, в котором используется сетка MVCContrib, я получаю ожидаемые результаты (несколько строк данных). Однако на той же самой странице в IE я получаю только одну строку (первую в наборе).

Когда я проверяю сгенерированный html с обеих сторон, в Chrome есть все строки, а в IE - только одна.

Вот список зависимостей в проекте: Fluent NHibernate, Castle Windsor, MvcContrib, JQuery 1.5.1., JQuery UI, jquery-address, jquery-multiselect.

Кто-нибудь может понять это? Это рассматриваемая точка зрения.

<div id="fileList">
    @Html.Grid(Model).Columns(column => {
        column.For(x => Html.ActionLink(x.Id.ToString(), "FileDetails", new { id = x.Id })).Named("File ID");
        column.For(x => x.Client.Name);
        column.For(x => x.Status);
        column.For(x => x.ProcessDate);
        column.For(x => x.TestMode);
        }).Attributes(Style => "text-align: center", @Class => "linkGrid").RowAttributes(data => new MvcContrib.Hash(onclick => String.Format("location.href='{0}';", Url.Action("FileDetails", new { id = data.Item.Id }))))

    @Html.AjaxPager(Model, new PagerOptions() { PageIndexParameterName="page", ShowDisabledPagerItems = false, AlwaysShowFirstLastPageNumber=true },
                                new AjaxOptions() { UpdateTargetId = "fileList" })
</div>

Новая находка:

Иногда, когда я обновляю представление в IE, я возвращаю Giberish обратно в сетку. Что было интересно, так это то, что тарабарщина меняется. Иногда я получаю кусочки искаженного javascript, и я даже немного болтаю по поводу некоторого сетевого оборудования на машине. Я только начал получать тарабарщину, когда перешел на IE9 (надеясь, что это решит проблему). Опять же, это происходит только в IE, Chrome и FireFox отлично работают.

Это пример тарабарщины, которую я вижу:

"寵 釚 뾀 㘳 Intel (R) 82567LM Gigabit Network Connection-QoS Packet Scheduler-0000 �� ᇟ ₧ Intel (R) 82567LM Gigabit Network Connection-WFP LightWeight Filter-0000 렮 蕄 �� ᇟ ₧  돨 Ә «Минипорт WAN (IP) 擭 Ⲫ 몣 䑳 㞶 Минипорт pWAN (сетевой монитор) -QoS Packet Scheduler-0000 葮 瀹 ᇞ ₝ᴀ Гигабитное сетевое соединение VIntel (R) 82567LM 뿊 ﯩ 橙 䅴 꺝 榮 퀏 蜒 VWAN Miniport (IP) -QoS Packet Scheduler-0000 葮 瀹 ᇞ ₝ᴀ 降 ᱚZWAN Miniport (IPv6) -QoS Packet Scheduler-0000 葮 瀹 ᇞ ₝ᴀ 降 ᱚ (WAN Miniport (PPPOE) ᩒ 踰 꿺 佉 쪹 郇 ꆖ 嚠 «Асинхронный адаптер RAS 砃 䥨 䋓 㞟 縨 沨 ꨊ: программный интерфейс обратной связи 1 葮 瀹 満 湯 捩 Мини-карта BDell Wireless 1397 WLAN G��⋂ 籶 䓇 춤 䦥 Dell Wireless 1397 WLAN Mini -Card-Virtual WiFi Filter Driver-0000G 렱 蕄 �� ᇟ ₧  돨 Ә vDell Wireless 1397 WLAN Mini-Card-QoS Packet Scheduler-0000G 렯 蕄 �� ᇟ ₧  Dell Wireless 1397 WLAN Mini-Card-Native WiFi Filter Driver-0000G 쾥 แ �� ᇟ ᎅ 採 풩 zDell Wireless 1397 WLAN Mini-Card-WFP LightWeight Filter-0000G 렰 蕄 �� ᇟ ₧  NMicrosoft Virtual WiFi Miniport AdapterG⋰ꞑ ૡ 䰌 侎 Microsoft Virtual WiFi Адаптер минипорта - собственный драйвер фильтра WiFi-0000G⋳Ӊ⤐ ᇠ 䚖 ☀ 릹  Microsoft Virtual WiFi Miniport Adapter-QoS Packet Scheduler-0000G⋴Ӊ⤐ ᇠ 䚖 ☀  Microsoft Virtual WiFi Miniport Adapter-WFP LightWeight Filter-0000G⋵Ӊ⤐ ᇠ 䚖 ☀ 릹 & WAN Miniport (SSTP) 韗 燸  䶍 �� 肬 �� 瀢 (WAN Miniport (IKEv2) 覠 耣 鰚 䰨 馐 羼 逪 ᫃ & WAN Miniport (L2TP) ␫ 麫 䘦 助 摆 뮟 骓 & WAN Miniport (PPTP) 鴬 �� 蝂 亱 · 闓 ᣄ㌿ 0Microsoft ISATAP Adapter 㳳 竹 눞 䔢 ン 螅 Псевдоинтерфейс туннелирования BTeredo 횀 ꎘ 忈 䊓 咚 㨎 됥 釙 6 Адаптер Microsoft ISATAP № 2ⴼꦡ 덁 䟩 㖷  첵 崰 崰 崰 6 Адаптер Microsoft ISATAP № 3 萖 ᅴ ൸ 䲖 �� ᧶ 6 Адаптер Microsoft ISATAP № 4ᝲ⪤ 蒉 䄎 䫺  "


person Brosto    schedule 13.04.2011    source источник
comment
Вот что я бы сделал на вашем месте: начните с удаления из кода вещей и фреймворков, чтобы упростить его, и постарайтесь сузить проблему. Тот единственный факт, что вы указали Fluent NHibernate, Castle Windsor, MvcContrib, JQuery 1.5.1., JQuery UI, jquery-address, jquery-multiselect, говорит о том, что вы ничего не делали, чтобы попытаться понять, что происходит и где происходит проблема может исходить от. Так что сузьте, пока не найдете. Если вы не нашли, покажите вашу сокращенную версию кода, позволяющую воспроизвести проблему.   -  person Darin Dimitrov    schedule 21.06.2011
comment
Дарин, спасибо за предложения. Я пробовал это несколько (то есть: удаление библиотек javascript). К сожалению, это не повлияло на мои результаты. Я не могу избавиться от Fluent NHibernate или Castle, так как они оба используются для получения результатов. Однако правильные результаты делают это за пределами контроллера и в представлении. Но то, что отображает браузер, просто испортилось. Вместо того, чтобы использовать MVCContrib для визуализации таблицы, я попробую создать таблицу вручную, чтобы посмотреть, как она выглядит.   -  person Brosto    schedule 21.06.2011
comment
@Brosto, конечно, вы можете избавиться от Fluent NHibernate и Castle: просто жестко закодируйте эти результаты в простой массив в действии вашего контроллера.   -  person Darin Dimitrov    schedule 21.06.2011
comment
Даррин, я просто попытался сузить круг результатов, которые отправлял в MVCContrib. Я обнаружил, что когда я исключаю следующий столбец, он работает нормально. column.For (x = ›x.Status);   -  person Brosto    schedule 21.06.2011
comment
@Brosto, отлично, а теперь давайте продолжим: какой тип этого свойства и, самое главное, какие там значения?   -  person Darin Dimitrov    schedule 21.06.2011
comment
@Brosto, один символ или массив символов? Кстати зачем вы используете char ??? Какого результата вы ожидаете?   -  person Darin Dimitrov    schedule 21.06.2011
comment
@ Даррин, это статусный код. например, "E" для ошибки ... Это просто флаг высокого уровня, чтобы сообщить мне, что произошло   -  person Brosto    schedule 21.06.2011
comment
@ Даррин, иногда этот флаг равен нулю. Я действительно устанавливаю флаг только тогда, когда возникает проблема. Похоже, что отображается некорректно, когда есть нулевое значение   -  person Brosto    schedule 21.06.2011
comment
@Brosto, попробуйте указать формат для этого столбца: column.For(x => x.Status).Format("{0}");. Это исправляет?   -  person Darin Dimitrov    schedule 21.06.2011
comment
это не исправило. Я думаю, что я могу изменить метод доступа get, чтобы он возвращал пробел при нулевом значении. Это похоже на взлом (и странно, что затронут только IE).   -  person Brosto    schedule 21.06.2011
comment
это сработало: public virtual char Status {get {if (mStatus == 0) return ''; иначе вернуть mStatus; } установить {mStatus = значение; }}   -  person Brosto    schedule 21.06.2011
comment
@Darrin - Мне нужно бежать, но давай, опубликуй свой ответ и забери свои 50. Спасибо, что прошли через это вместе со мной. Я награжу тебя утром, когда вернусь ...   -  person Brosto    schedule 21.06.2011
comment
@Brosto, это работает column.Custom(@<text>@item.Status</text>).Named("Status")? Или этот: column.Custom(@<text>@(item.Status != 0 ? item.Status : ' ')</text>).Named("Status");?   -  person Darin Dimitrov    schedule 21.06.2011


Ответы (1)


После приятного сеанса отладки, который мы провели в разделе комментариев, кажется, что проблема вызвана столбцом Status в модели, который имеет тип char, и проблема появляется, когда значение равно 0. Таким образом, одно из возможных решений - проверить, установлено ли значение столбца равен 0 и вместо этого замените его пустым пространством.

person Darin Dimitrov    schedule 20.06.2011
comment
Еще раз спасибо за то, что прошли через это со мной. В нем говорится, что мне нужно подождать 8 часов, прежде чем я смогу вручить награду ... - person Brosto; 21.06.2011