Если вы внимательно посмотрите на изображение выше, вы увидите хит-бокс, отображаемый на Microsoft Chart Control. Это отображается, когда я нажимаю DataPoint на элементе управления Microsoft Chart. Для DataPoint определено значение обратной передачи, а для Chart реализован обработчик события On_Click. Я могу заставить эту карту изображения отображаться, щелкнув правой или левой кнопкой мыши.
Моя установка такая:
- Полностью пустая базовая страница .aspx, ЕСЛИ у нее есть главная страница. Настройка главной страницы немного уникальна тем, что есть главная страница «WebForms» и главная страница «Root». Главная страница «WebForms» наследуется от главной страницы «Root». Это связано с тем, что у меня есть страница ASP.NET AJAX, интегрированная в решение MVC. У меня нет проблем с этой настройкой в любом другом браузере. (Кроме того, во время тестирования я удалил зависимость от посредника MasterPage — проблема осталась. Я с уверенностью могу сказать, что иерархия мастер-страниц не является источником этой проблемы.)
- MasterPageFile="~/Views/Shared/WebForm.master" — это объявление MasterPage на моей базовой странице.
WebForm MasterPage выглядит примерно так:
<asp:Content ContentPlaceHolderID="MainContentRoot" runat="server">
<form id="form1" runat="server">
<asp:ContentPlaceHolder ID="MainContent" runat="server">
</asp:ContentPlaceHolder>
</form>
</asp:Content>
Есть и другие заполнители контента, но я считаю, что это единственный подходящий. Обратите внимание, что я завернул этот заполнитель в теги начальной формы. Это позволяет мне отделить теги «формы» от Html.StartForm() и EndForm(), как это обычно бывает в MVC.
Корень.Мастер:
<%@ Master Language="C#" Inherits="System.Web.UI.MasterPage" %>
<%@ Import Namespace="CableSolve.Web.Controllers" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title><asp:ContentPlaceHolder ID="TitleContentRoot" runat="server" /></title>
<asp:ContentPlaceHolder ID="CssContentRoot" runat="server" />
</head>
<body>
<div id="ContentPlaceHolder" style="height: 100%" class="ui-widget">
<asp:ContentPlaceHolder ID="MainContentRoot" runat="server" />
</div>
</body>
Once again, there are other place holders, but I believe these to be the only relevant ones. I have disabled all CSS on the pages and I still see this occurring.
Итак... что я могу предположить, так это то, что идентификатор клиента для карты изображения не обрабатывается должным образом в этом сценарии. Уникальный идентификатор изменен тем фактом, что существуют заполнители содержимого. Посмотрите на следующее:
INTERNET EXPLORER 9.0.8112 HTML MARKUP:
<div class="rdContent" id="ctl00_ctl00_MainContentRoot_MainContent_RadDock_114c1ddaa93b2a4313a905aa790b7d3b5177_C">
<img id="ctl00_ctl00_MainContentRoot_MainContent_RadDock_114c1ddaa93b2a4313a905aa790b7d3b5177_C_Chart_1d08148bad019a4deca8463a12fe211701a0_Chart_1d08148bad019a4deca8463a12fe211701a0" style="width: 979px; height: 1494px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px;" alt="" src="/csweb_IISVS2010/Dashboard/ChartImg.axd?i=chart_63c65dfd662c42fd9a14723465b4db62_3.png&g=4b336a3ffbc346309c1eb2197ee6fe4c" useMap="#ctl00_ctl00_MainContentRoot_MainContent_RadDock_114c1ddaa93b2a4313a905aa790b7d3b5177_C_Chart_1d08148bad019a4deca8463a12fe211701a0_Chart_1d08148bad019a4deca8463a12fe211701a0ImageMap"/>
<map name="ctl00_ctl00_MainContentRoot_MainContent_RadDock_114c1ddaa93b2a4313a905aa790b7d3b5177_C_Chart_1d08148bad019a4deca8463a12fe211701a0_Chart_1d08148bad019a4deca8463a12fe211701a0ImageMap" id="ctl00_ctl00_MainContentRoot_MainContent_RadDock_114c1ddaa93b2a4313a905aa790b7d3b5177_C_Chart_1d08148bad019a4deca8463a12fe211701a0_Chart_1d08148bad019a4deca8463a12fe211701a0ImageMap">
GOOGLE CHROME 13.0.782
<div id="ctl00_ctl00_MainContentRoot_MainContent_RadDock_114c1ddaa93b2a4313a905aa790b7d3b5177_C" class="rdContent">
<img id="ctl00_ctl00_MainContentRoot_MainContent_RadDock_114c1ddaa93b2a4313a905aa790b7d3b5177_C_Chart_1d08148bad019a4deca8463a12fe211701a0_Chart_1d08148bad019a4deca8463a12fe211701a0" src="/csweb_IISVS2010/Dashboard/ChartImg.axd?i=chart_63c65dfd662c42fd9a14723465b4db62_1.png&g=f6ae9770eb0d497187804e384e37a51d" alt="" usemap="#ctl00_ctl00_MainContentRoot_MainContent_RadDock_114c1ddaa93b2a4313a905aa790b7d3b5177_C_Chart_1d08148bad019a4deca8463a12fe211701a0_Chart_1d08148bad019a4deca8463a12fe211701a0ImageMap" style="height:1448px;width:983px;border-width:0px;">
<map name="ctl00_ctl00_MainContentRoot_MainContent_RadDock_114c1ddaa93b2a4313a905aa790b7d3b5177_C_Chart_1d08148bad019a4deca8463a12fe211701a0_Chart_1d08148bad019a4deca8463a12fe211701a0ImageMap" id="ctl00_ctl00_MainContentRoot_MainContent_RadDock_114c1ddaa93b2a4313a905aa790b7d3b5177_C_Chart_1d08148bad019a4deca8463a12fe211701a0_Chart_1d08148bad019a4deca8463a12fe211701a0ImageMap">
Я относительно новичок в веб-разработке. Каковы мои варианты дальнейшей отладки или исправления проблемы? Я стрелял пулями в темноте, чтобы наткнуться на тот факт, что это были мастер-страницы, представляющие проблему.
Спасибо за чтение и ваше время. Ваше здоровье.
РЕДАКТИРОВАТЬ: это происходит с включенным или отключенным режимом совместимости. Я переместил теги формы в заполнитель содержимого моей базовой страницы и не заметил никаких различий.
EDIT2: я также удалил промежуточную главную страницу. Я чувствовал, что это могло быть большим источником проблем, но эта проблема по-прежнему возникает при использовании только одной главной страницы.
Вкратце: когда мой элемент управления диаграммой находится внутри ContentPlaceHolder, я могу видеть карту изображения, щелкнув левой или правой кнопкой мыши область, содержащую карту изображения. Это происходит только под Internet Explorer.
(редактирование после награды):
Я попытался сбросить CSS, используя фрагмент кода CSS, предоставленный Райаном Тернье. Я сослался на него, используя фрагмент кода ниже. Содержимое Dashboard.css было фрагментом кода, предоставленным Райаном. Нет эффекта.
<link rel="stylesheet" type="text/css" href="../Content/Dashboard/Dashboard.css?t=<%= DateTime.Now.Ticks %>" />
Я попытался очистить фокус ссылки. Меня беспокоит то, что то, что я нажимаю, на самом деле не ссылка, а изображение с картой, и карта становится видимой. Нет эффекта.
Я читал о надстройке Link Scrubber для Adobe Dreamweaver. Это казалось не относящимся к рассматриваемому проекту. Я использую Visual Studio 2k10, но я немного погуглил, пытаясь найти сопоставимые шаги для VS. Я не нашел ни одного.