- PR -

フォームタグにUTNを追加

1
投稿者投稿内容
BBS
会議室デビュー日: 2005/09/03
投稿数: 3
投稿日時: 2005-09-03 11:35
現在、携帯用のコンテンツサイトを構築しようとしています。
その中で会員用のコンテンツを設置する予定のため、ユーザーの認証を行おうと考えています。
そこで、携帯端末の製造番号とメールアドレス、パスワードで認証をしようと思っているのですが、モバイルASP.NETのFormに、i-mode用のUTNを追加する方法が分かりません。
UTNを追加するイメージとしては、<form id="hoge" utn><input...></form>となります。

モバイルasp.netでi-mode用のutnを追加するには、どのような方法が考えられるでしょうか?

_________________
葉瀬崎浩樹
大ベテラン
会議室デビュー日: 2005/06/28
投稿数: 115
お住まい・勤務地: 兵庫県
投稿日時: 2005-09-06 13:57
携帯サイトの開発はやったことが無いので、
外してたらすいません。

ご質問は、Formタグにutn属性を追加する方法が
わからないということですよね?
HTML要素に属性を追加する方法を2つ紹介します。

方法1:aspxのデザイン画面を開いて、直接編集する。
<form id="Form1" method="post" runat="server">
        ↓
<form id="Form1" method="post" runat="server" utn="utn">

方法2:サーバサイドに下記コーディングを入れる。
Form1.Attributes.Add( "utn", "utn" );

携帯端末の種類に応じて属性の追加を行いたいのであれば、
サーバ側で端末の種類を判別して追加すればいいと思います。


■参考リンク(私が参考にした)
・作ろうiモードコンテンツ|NTTドコモ
iモード対応XHTMLの考え方
iモード対応HTMLの考え方
utn属性
対応表

ASP.NET(略)ブラウザの種類を判別する
携帯サイトの端末対応に関する質問です
[ASP.NET]多種端末への対応の方法について

#リンク追加

[ メッセージ編集済み 編集者: 葉瀬崎浩樹 編集日時 2005-09-06 14:10 ]
BBS
会議室デビュー日: 2005/09/03
投稿数: 3
投稿日時: 2005-09-06 19:13
ご回答いただきまして、ありがとうございます。

とりあえず、カスタム属性を有効にするために、web.configに以下の一行を追加しました。
<mobileControls cookielessDataDictionaryType="System.Web.Mobile.CookielessData" allowCustomAttributes="True"/>

さらに、Page_Loadでも以下の一行を念のために追加しました。
AllowCustomAttributes = true;

ご教授いただきました、方法1ですが、結果はだめでした(完全にutnが無視されています)。
<mobile:Form id="Form1" runat="server" utn="utn">

ためしに、
<mobile:Form id="Form1" runat="server" utn>
としても、当然だめでした。

同じように、方法2についても試してみましたが、完全にutnが無視されてしまいます。
このように書いてみました。
Form1.CustomAttributes.Add("utn", "utn");
Form1.CustomAttributes.Add("test", null);
utn="utn"という属性も追加されず、testという属性も追加されません。

何か良い方法はないでしょうか?
それとも、自分でコントロールを作成するしかないのでしょうか?
自分でもいろいろと調べてみましたが、探し方が悪いのか解決方法を見つけることができません。
どなたか力を貸してください。
宜しくお願いいたします。
葉瀬崎浩樹
大ベテラン
会議室デビュー日: 2005/06/28
投稿数: 115
お住まい・勤務地: 兵庫県
投稿日時: 2005-09-08 22:44
回答ではありません。。

先ほど、モバイルWebアプリケーションを作成し、
属性の追加を実際に試してみました。
結果は、BBSさんと同様に、モバイルWebページでは失敗しました。
CustomAttributes.Add()も試してみましたが、
やはり属性はレンダリングされません。。

通常のWebページとは勝手が違うのですね。。
失礼しました。

モバイルページのカスタム属性についてざっっくり調べたのですが、
有効な解決策は見つけることが出来ませんでした。

MobileControls.Form かIAttributeAccessorを継承したクラスを自作して
無理やりRender()するしかないのでしょうか。。
BBS
会議室デビュー日: 2005/09/03
投稿数: 3
投稿日時: 2005-09-22 13:10
ご回答ありがとうございます。
やはりそれしか方法がなさそうですね。

余談ですが、VS2005でも試してみましたが、同じような現象が発生してしまいました。
.NET Framework 2.0 で改善されていればと、淡い期待を抱いていたのですが駄目でした…。
# .NET Framework 2.0 で属性を自由に追加できるようになってれば・・・
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-09-26 19:17
とりあえず、クロスリンクしておきます。

_________________
Desmo
会議室デビュー日: 2003/05/23
投稿数: 8
投稿日時: 2007-04-17 18:53
今更な感じもありますが、同じことを調査していて別解にたどり着いたので投稿しておきます。

utnが必要なPageのOnRenderをオーバライドして、<form>タグにutnをつけてみました。

i-mode HTML シミュレータIIで試した限りでは、端末情報が取得できていました。

protected override void Render(HtmlTextWriter writer)
{
StringBuilder sb = new StringBuilder ();

StringWriter swr = new StringWriter (sb);

HtmlTextWriter hwr = (HtmlTextWriter)
writer.GetType().
GetConstructor(new Type[]{writer.GetType(),typeof(MobileCapabilities)}).
Invoke(new object[]{swr,HttpContext.Current.Request.Browser});

base.Render (hwr);
string html = sb.ToString ();

Regex formRegex = new Regex(@"<form\\s+",RegexOptions.Compiled);
html = formRegex.Replace(html,"<form utn ");

writer.Write (html);


}
1

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