- PR -

HyperLinkコントロールについて

1
投稿者投稿内容
まさお
常連さん
会議室デビュー日: 2007/11/06
投稿数: 38
投稿日時: 2008-03-12 02:09
お世話になります。

VS2005でWebアプリケーションを作成しています。
HyperLinkコントロールについての質問なんですが、
NavigateUrlプロパティにURLを指定すると、HTMLソースでは

<a href="[NavigateUrlで指定したURL]">リンク</a>

と、なると思います。

現在、モバイルのGPS機能を用いて位置情報を取得するアプリケーションを作成しているのですが、

DoCoMoでの位置情報を取得する場合、
<a href="[送り先URL]" lcs>
と指定しなければなりません。

HyperLinkコントロールのNavigateUrlプロパティにて、
"http://test.co.jp/test.aspx lcs"と指定すると、
当然HTMLソースでは
<a href="http://test.co.jp/test.aspx lcs">位置情報取得</a>
となってしまい、「lcs」が""の中に入ってしまいます。

直接<a>タグを入れると、
<a href="http://test.co.jp/test.aspx" lcs>位置情報取得</a>
「lcs」の部分で有効な属性ではないとエラーがでます。

ASP.NETではこのような記述は無理なのでしょうか?
どなたかわかる方、ご教授願います。

[参考:GPS携帯 位置情報 基礎知識]
http://www.yaskey.cside.tv/mapserver/note/gps.html







かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2008-03-12 10:37
代案になってしまいますが、Literalコントロールを使ってベタに書くというのも一つの方法だと思います。

コード:
    Protected Sub Page_Load(ByVal sender As Object _
    , ByVal e As System.EventArgs) Handles Me.Load
        Literal1.Text = _
        "<a href=""http://test.co.jp/test.aspx"" lcs>位置情報取得</a>"
    End Sub


フォームにLiteralを貼り付けてこんなコードを書けば、パーサーに検証されちゃったりせずに、HTMLにそのまんま出力されます。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-03-12 10:50
コード:
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        HyperLink1.NavigateUrl = "http://www.example.com/"
        HyperLink1.Attributes.Add("lcs", Nothing)
    End Sub



Page上にHyperLinkを置いてから上のコードを書いて実行したところ、

コード:
<a id="HyperLink1" lcs href="http://www.example.com/">HyperLink</a>



こんな風になりました。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2008-03-12 11:26
そか、rainさんのでOKですね。
docomoのサイトで確認したら、lcs属性さえ追加されていれば良いようですし。

#lcsは属性ではなく、特殊なlcs>という閉じ方なのかと勘違いしていました。
まさお
常連さん
会議室デビュー日: 2007/11/06
投稿数: 38
投稿日時: 2008-03-12 20:44
回答ありがとうございます。

...大きなミスをしていました。
モバイルWebアプリケーションなので、「HyperLink」ではなく「Link」でした。。。

Linkコントロールにも「Attributes.Add」のような「CustomAttributes.Add」というものがありました。

MSDNをによると、カスタム属性を有効にする必要があるらしく、web.configに以下のように
<mobileControls cookielessDataDictionaryType="System.Web.Mobile.CookielessData" allowCustomAttributes="True"/>
しました。

エラーが出ず、実行はできたのですが、ソースをみると(iモード HTMLシミュレータU)
「lcs」という属性は表示されていませんでした。。。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2008-03-17 23:09
引用:

まさおさんの書き込み (2008-03-12 20:44) より:

...大きなミスをしていました。
モバイルWebアプリケーションなので、「HyperLink」ではなく「Link」でした。。。


カスタムアトリビュートで設定後 Chtml 用の Link Adapter を作成してあげる必要があります。
ASP.NET でモバイルの開発をするなら一度目を通しておくと幸せになれるかも
http://www.atmarkit.co.jp/fdotnet/aspnetmobile/aspnetmobile01/aspnetmobile01_01.html

---追記
役には立つけれど幸せ...じゃぁないかな...

_________________
かるあ のメモスニペット

[ メッセージ編集済み 編集者: かるあ 編集日時 2008-03-17 23:10 ]
1

スキルアップ/キャリアアップ(JOB@IT)