ASP.netでクリッカブルマップを利用して画像を表示する方法

このQ&Aのポイント
  • ASP.netでクリッカブルマップを利用した場合、画像表示やクリック選択場所はできるが、リンクが機能しない問題が発生する。
  • 上記のコードにおいて、NavigateUrlのページにリンクしない原因は何でしょうか?
  • この問題を解決するためにはどのような対策が必要でしょうか?
回答を見る
  • ベストアンサー

クリッカブルマップを利用したASP.netですが

クリッカブルマップを利用したASP.netですが 下記コードで画像表示、クリック選択場所はできたのですが クリックしてもNAVIGATEURLのページにリンクしません。 なぜでしょうか? <asp:ImageMap ID = "ImageMAP1" runat = "server" HotSpotMode = "PostBack" ImageUrl = "~/images/top.gif"> <asp:Rectangle HotSpot Bottom = "47" NavigateUrl = "~/website/menu.aspx" Right = "68" Left = "2"/> <asp:Rectangle HotSpot Bottom = "47" NavigateUrl = "~/website/page2.aspx" Right = "139" Left = "69"/> <asp:Rectangle HotSpot Bottom = "47" NavigateUrl = "~/website/page3.aspx" Right = "209" Left = "140"/> <asp:Rectangle HotSpot Bottom = "47" NavigateUrl = "~/website/page4.aspx" Right = "298" Left = "210"/> </asp:ImageMap>

  • epiko
  • お礼率58% (21/36)

質問者が選んだベストアンサー

  • ベストアンサー
  • aspnet
  • ベストアンサー率79% (72/91)
回答No.1

<asp:imagemap>たまにしか使わないのでうろ覚えなんですが、HotSpotMode="Navigate"とすれば、<asp:Rectangle>側のNavigateURLパラメタが効くのと違いますか? HotSpotMode="PostBack"のときはポストバックイベントハンドラで飛び先を指定するんだと思います。

epiko
質問者

お礼

HotSpotMode="Navigate" にしたらちゃんとリンクが有効となりました。 ありがとうございます

関連するQ&A

  • クリッカブルマップを利用したASP.netですが

    クリッカブルマップを利用したASP.netですが <asp:ImageMap ID = "ImageMAP1" runat = "server" HotSpotMode = "Navigate" ImageUrl = "~/images/top.gif"> <asp:Rectangle HotSpot Bottom = "47" NavigateUrl = "~/website/menu.aspx" Right = "68" Left = "2"/> <asp:Rectangle HotSpot Bottom = "47" NavigateUrl = "~/website/page2.aspx" Right = "139" Left = "69"/> <asp:Rectangle HotSpot Bottom = "47" NavigateUrl = "~/website/page3.aspx" Right = "209" Left = "140"/> <asp:Rectangle HotSpot Bottom = "47" NavigateUrl = "~/website/page4.aspx" Right = "298" Left = "210"/> </asp:ImageMap> NavigateUrl を同じページにあるDropDwnListによって IF DropDownList.text="" then NavigateUrl = "~/website/menu.aspx?ddl=100" else NavigateUrl = "~/website/menu.aspx?ddl=" & DropDownList.text end if となるように条件によって 指定URLを変更できるようにしたいのですが どのようにしたらできるのでしょうか? ボタンの場合は クリックしたときにイベントができますが ImageMAP1でそれぞれの範囲のNavigateUrlごとに条件を入れることはできるのでしょうか? 教えてください。

  • ASP.NETでのタイマーの使い方

    C#でWebアプリを作っています ActiveXコントロールで計算スレッドを作成し、定期的に計算結果の画像で System.Web.UI.WebControls.Image を更新したいのですが、タイマイベントのところで ImageMap.ImageUrl = "CalcView.aspx"; (ImageMapがImageで、CalcView.aspxが動的に計算結果画像を返すURLです) としても更新されません。ボタンを用意してクリックイベントで上記を実装すれば更新されます。なにがいけないのでしょうか?よろしくお願いします

  • ASP.NET 動的に行を増やすTable

    ASP.NET(VB)アプリケーションでボタンが押される度に、 行を追加するTableを作りたいです。 初期表示時にPage_Initで5行のtableを作成するようにしています。 ボタンクリックイベントで行数を増やしていくのですが、 他のコントロール(asp.textbox)のテキストチェンジイベントでPostBackが発生すると、 元の5行に戻ってしまいます。 Page_Initで5行と指定しているためなので、 ここの指定数をPostBack前に保持した行数にすれば良いと思ったのですが、 もっと他にスマートな方法はありませんでしょうか? もし、保持する方法をとる場合は、セッションなどで保持するべきでしょうか?

  • aspからasp.netへの遷移(その逆も)

    拡張子がaspの画面から拡張子がaspxの画面へ遷移することは 不可能なのでしょうか?何か特殊な方法があるのでしょうか? ありましたら教えていただけないでしょうか。 aspx画面でボタン押下時に Response.Redirect("./test1.asp")でasp画面へ遷移させると 以下のエラーとなります。 '/WebSite1' アプリケーションでサーバー エラーが発生しました。 この種類のページは処理できません。 説明: 要求されたページの種類は、明示的に禁止されるため処理されません。拡張子 '.asp' が正しくない可能性があります。 下の URL が正しく入力されていることを確認してください。 要求された URL: /WebSite1/test1.asp バージョン情報: Microsoft .NET Framework バージョン:2.0.50727.1433; ASP.NET バージョン:2.0.50727.1433

  • 画像ボタンクリック後、表示される枠線の削除 ASP

    下記のようなプログラムを使っています。画像をクリック後、画像の周りに点線の枠線が表示されます。表示させたくないのですが、どうすれば実現できるでしょうか。ご存知の方がいらっしゃいましたら、ご教授願います。 <asp:ImageButton ID="btnNewLogin" ImageUrl="images/login.png" runat="server" onclick="btnNewLogin_Click" />

  • ASP.NET WEBアプリケーションで作成されたページより他の既存ペ

    ASP.NET WEBアプリケーションで作成されたページより他の既存ページへデータを投げたいと考えているのですがセキュリティ上難しいのでは?と考えています。しかし、なんとか代替案がないかと思っておりどなたかヒントをいただけないでしょうか? <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> <asp:TextBox ID="TextBox3" runat="server" Height="72px" TextMode="MultiLine" Width="651px"></asp:TextBox> <br /> <asp:Button ID="Button1" runat="server" Text="Button" />&nbsp;&nbsp; <asp:Button ID="Button2" runat="server" Text="Button" /> <br /> <br /> <asp:Label ID="Label1" runat="server"></asp:Label> 例えばこんな簡単なaspxのページで構成されているとします。 テキストボックスに入れた値を既存のWEBページ(Yahooへのログインだとか)へ入れ込みたいのですが・・・クライアントにスクリプトで作ってとかなら余裕で出来ると思うのですがサーバサイドで仕込むことは難しいでしょうか?回避策とかもあるとなおうれしいのですが・・・よろしくお願いします。

  • <ASP>にTextBoxの値を設定する方法

    TextBoxに記述されたDB接続文字列を<ASP>内で設定しようと試みておりますが、失敗します。どのように記述を改めればよろしいでしょうか? ----------------- <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebForm1" %> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { TextBox1.Text = Application["DB_CON_STRING"].ToString(); } </script> <!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>無題のページ</title> </head> <body> <form id="form1" runat="server"> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <div> </div> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"> <Columns> <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="ID" /> <asp:BoundField DataField="DATETIME" HeaderText="DATETIME" SortExpression="DATETIME" /> <asp:BoundField DataField="MESSAGE" HeaderText="MESSAGE" SortExpression="MESSAGE" /> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="form1.TextBox1.Text"★ここがうまくいかない★ SelectCommand="SELECT * FROM TEST ORDER BY ID DESC"></asp:SqlDataSource> </form> </body> </html>

  • ASP.NETでTimerコントロールを使用したい

    ASP.NETWebアプリケーションについての質問です。 ajaxのTimerコントロールでイベントを発生させ、画面の再描画をしようとしています。 コードは以下のような感じで、OnPreRenderイベント内で描画処理を行います。 Partial Public Class _Default Inherits System.Web.UI.Page Private str As String = "" Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load str = CStr(Date.Now) End Sub Protected Overrides Sub OnPreRender( _ ByVal e As System.EventArgs _ ) Label1.Text = str End Sub End Class Timerコントロールを配置して実行したところ、 Script controls may not be registered before PreRender. というエラーが出てしまいます。 調べてみたのですが原因がわかりません。 何かプロパティの設定などが必要なのでしょうか? aspx のコードは以下のとおりです。 <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication5._Default" %> <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TagPrefix="asp" %> <!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>無題のページ</title> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" ></asp:ScriptManager> <asp:Timer ID="Timer1"runat="server"></asp:Timer> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Labe> l </form> </body> </html> 回答よろしくお願いいたします。

    • ベストアンサー
    • AJAX
  • ASP.netでImageButtonのImageUrlの指定ができない

    VS2008 Web Developer Express EditionでWebアプリを作っています。 ImageButtonをFormに貼り付け、右下のプロパティPaneからImageUrlを指定しようとしても、該当するファイルが表示されません。 ちなみにそのimageファイルはaspxファイルがあるフォルダにimagesというフォルダを作り、さらにippanというフォルダにnippo.jpgというファイルを入れています。 (つまりimages/ippan/nippo.jpgです) プロパティPaneから指定できないので、ソースコードの画面から <asp:ImageButton ID="nippo" Imageurl="images/ippan/nippo.jpg" runat="server" /> と入力すると、デザイン画面にnippo.jpgが表示されました。 それはいいのですが、最下部のエラー一覧Paneに「警告」として、 「ファイル'images/ippan/nippo.jpg'が見つかりませんでした。」 と表示されます。 これはなぜでしょうか?何か設定が必要なのでしょうか? ちなみにVS環境には、ASP.NET AJAX Control Toolkitをインストールしています。

  • ASP.NET web アプリケーションでの入力検証に関して質問です

    ASP.NET web アプリケーションでの入力検証に関して質問です 当方.NET、オブジェクト指向言語初心者です 検討違いなことを質問しているかもしれませんが 回答いただけたら幸いです 以下を使用しています visual studio 2008 .NET Framework 3.5 C# 新規プロジェクト作成時に ASP.NET web アプリケーションを選択し、 (ASP.NET MVC等ではなく) TextBox Button を配置し Buttonを押下した時に TextBoxに何も入力されていなかった場合 エラーメッセージを表示するような入力検証を System.ComponentModel.DataAnnotations を用いて行いたいと考えています (RequiredFieldValidatorではなく) Q1 新規プロジェクト作成時にASP.NET web アプリケーションを選択した場合 System.ComponentModel.DataAnnotations を用いて入力検証はおこなえるのでしょうか? (webで検索したところASP.NET MVCやSilverlightのサンプルはあったのですが・・・) Q2 Q1がYESの場合 具体的にはどう実装すればよいのでしょうか? 以下にソースを記載します ■Defaoult.Aspx <%@ Page Title="ホーム ページ" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %> <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> </asp:Content> <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator> <br /> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" /> </asp:Content> ■Default.aspx.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.ComponentModel.DataAnnotations;  //←※ namespace WebApplication2 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { } } } ※ 参照の追加で System.ComponentModel.DataAnnotations を追加して usingで定義するところまでは検討がつきました 以上、宜しくお願い致します

専門家に質問してみよう