vs2003 asp.net中直接输出wml,并利用C#做动态页面的控制,不使用微软的移动控件

考虑移动控件的很多不可控因素,和兼容性问题,我选择了手工输出wml加自定义控件的方式,来完成wap开发,动态的内容由自定义的控件加C#来控制,

建立一个web页面WebForm1.aspx,清空里面的html代码,加入下面代码: 
============================================================

<%@ Register TagPrefix="uc1" TagName="WmlOut" Src="WmlOut.ascx" %>
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebLog.WebForm1" contentType="text/vnd.wap.wml" %>
<%=@"<?xml version=""1.0"" encoding=""utf-8""?>"%>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
 <card title="title" id="form1">
  <p align="left">
   本栏目免费试用。hah<br/>
   <uc1:WmlOut id="selectBar" runat="server"></uc1:WmlOut>
  </p>
 </card>
</wml>

第一和第二行代码是加入控件后自动产生的,WmlOut是我自己定义的一个输出字符串的控件,
注意第4行一定要在第5行的前面,也不要放在第1行,不然.net会自动把它乱移到其它行而出现wml代码混乱,
千万注意,每次写完这个文件的代码,编写其它文件前一定ctrl+s一下,不然.net老是要自动把你的内容改乱,比如
<br/>会被改成<br>,很烦.

 <uc1:WmlOut id="selectBar" runat="server"></uc1:WmlOut>就是我们加入的自己的控件,可以在cs文件中用C#控制,下面是WebForm1.aspx.cs内容:
================================================

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace WebLog
{
 /// <summary>
 /// WebForm1 的摘要说明。
 /// </summary>
 public class WebForm1 : System.Web.UI.Page
 {
  protected WmlOut selectBar;//这里定义了控件实例,就可以引用操控了

  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   selectBar.WmlText = //Form1.ClientID + " " + Form1.ID+
    "<SELECT ivalue=/"0/">"
    +"<OPTION>[栏目快速导航]</OPTION>"
    +"<OPTION onpick=/"http://bbs.xxxx.com/">[论坛]</OPTION>/n"
    +"<OPTION onpick=/"http://chat.xxxx.com/">[聊天室]</OPTION>"
    +"</SELECT><br/>";
  }

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion
 }
}

下面是自定义控件WmlOut.ascx.cs:
=========================================

namespace WebLog
{
 using System;
 using System.Data;
 using System.Drawing;
 using System.Web;
 using System.Web.UI.WebControls;
 using System.Web.UI.HtmlControls;
  using System.Web.UI;

 /// <summary>
 ///  WmlOut 的摘要说明。
 /// </summary>
 public class WmlOut : System.Web.UI.UserControl
 {
  private string wmlText;
  public string WmlText
  {
   get
   {
    return wmlText;
   }
   set
   {
    wmlText = value;
   }
  }

  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
  }

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  ///  设计器支持所需的方法 - 不要使用代码编辑器
  ///  修改此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion
  protected override void Render(HtmlTextWriter output)
  {
   output.Write(wmlText);
  }
 }
}

你可能感兴趣的:(object,C#,System,webform,asp.net,微软)