2007-05-09
■[ASP.NET]ASP.NET Mobile ControlでFormにutn属性をつける 
DoCoMoの携帯電話の端末IDを取得するには、formやaタグにutnという属性をつける必要がある
(http://www.limy.org/program/mobile/uid.html)
しかし、Mobile ControlのFormはutn属性の出力に対応していないので、これを出力できるCHTML用のDevice Adapterを作ってみる
public class CHTMLUtnFormAdapter :ChtmlFormAdapter { public override void Render(HtmlMobileTextWriter writer) { if(base.Control.CustomAttributes["utn"] == null) { base.Render(writer); return; } try { StringBuilder sb = new StringBuilder (); StringWriter swr = new StringWriter (sb); HtmlMobileTextWriter hwr = (HtmlMobileTextWriter) 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+id=\"" + Control.ClientID + "\"",RegexOptions.Compiled); html = formRegex.Replace(html,"
■[ASP.NET]mobile:TextBox に istyle 属性を追加する 
From よさだやぐぶろぐ
http://osada.bz/PermaLink.aspx?guid=3daf911f-347a-4efa-9728-8e8ebc5598d2
DeviceSpecific でも CustomAttributes でも、同じようにセットした accesskey はいけるのに、istyle 属性は勝手に消される。AccessKey とかってやってみても、accesskey ってなるんだよね。どうも裏でチェックしてるっぽい。 MobileCapabilities で SupportsInputIStyle って取れるんだけど、使えなきゃ意味ねぇよな全く。結局独自でコントロールを作るしかないらしい。
ChtmlTextBoxAdapterが、TextBoxのnumericプロパティがTrueの時に、istyle=4を出力しているだけで、
CustomAttributesでistyleを設定しても無視されている模様
なので、istyleをサポートしたAdapterを作ってみた
public class IStyleSupportTextBoxAdapter : ChtmlTextBoxAdapter { protected override void AddAttributes(HtmlMobileTextWriter writer) { base.AddAttributes(writer); TextBox tbox = (TextBox) base.Control; string istyle = (string)tbox.CustomAttributes["istyle"]; if(istyle !=null) { writer.WriteAttribute("istyle", istyle); } } }
■[ASP.NET]ASP.NET Mobile Control でStyleを一元管理する 
http://msdn2.microsoft.com/ja-jp/library/6854a8as(VS.80).aspx
外部スタイル シートの実装 外部スタイル シートを実装するには、次の 3 つの操作が必要です。 1. .ascx ファイルに Microsoft ASP.NET ユーザー コントロールを記述します。 2. .ascx ファイルにスタイル シートを 1 つ配置し、必要な Style 要素を追加します。 3. スタイル シートを宣言し、次に、その ReferencePath プロパティに、外部スタイル シートを使用する各モバイル ページ用のユーザー コントロールの .ascx ファイル名を設定します。 実行時に、外部スタイル シートに宣言したすべてのスタイルが、モバイル ページのスタイル シート用の ASP.NET ページ フレームワークで使用できるようになります。
少し補足
3.はascxではなく、スタイルを参照するaspxに対しての設定
また、ここで使用するascxにはStyleSheet以外のコントロールを含めないほうが無難
Panel等が含まれていると
型 Panel の ID _ctl0:pnlHeader を持つコントロールは、フォーム内に含まれなければなりません。
となってしまう
(StyleSheetはFormの外側に配置しなければならないが、その他のコントロールはFormの内側に配置しなければならないため、と思われる)
コメントを書く
トラックバック - http://d.hatena.ne.jp/m-tanaka/20070509