书接上篇,现在我们来讨论如何修改web.config文件,其实说起来,你也可以直接修改machine.config,但一般没有人建议这样做,最好最安全的方法,还是只修改某个WEB应用相关的web.config文件.
第三步,找到web.config中的MobileControls段落.修改成以下模样:
<mobileControlscookielessDataDictionaryType="System.Web.Mobile.CookielessData">
<devicename="htmlDeviceAdapters"inheritsFrom="HtmlDeviceAdapters">
<controlname="cn.sharetop.model.comm.MultiLineTextBox,cn.sharetop.model"
adapter="cn.sharetop.model.comm.HTMLMultiLineTextBoxAdapter,cn.sharetop.model"/>
</device>
</mobileControls>
第四步, 当然就是应用了,在你的Asp页面中,这样使用这个控件,先声明前缀和名域空间,以及程序集:
<%@RegisterTagPrefix="myControl"Namespace="cn.sharetop.model.comm"Assembly="cn.sharetop.model"%>
然后,在页面加入我们自己的多行输入控件:
<mobile:formid="Form1"runat="server">
<FONTface="宋体">
<myControl:MultiLineTextBoxid="mtextbox1"runat="Server"Cols="20"Rows="6"Text="me"></myControl:MultiLineTextBox>
</FONT>
</mobile:form>
OK,现在你用IE访问这个web application,会发现这个控件被正确解析成了<textarea>.
至此,我们的工作算是成功了一半.
但是马上你就会发现,为什么用手机访问根本没有变化,仍是一个单行输入的<input>,......我尝试了Openwave 7 和 Openwave 6.2 两个WAP模拟器,以及Nokia 6680和Sumsung X859两款手机,都不能得到想要的结果...
从模拟器可以看出,在Openwave 6.2 中,IIS返回的ContentType是 application/xhtml-xml,而Openwave 7中,却返回了text/vnd.wap.wml.....奇怪啊奇怪...
我就是在这点被卡住了,呵呵,主要是对web.config的配置不熟,里面的那些东西都是停留在"知其然,不知其所以然"的阶段...没办法,只好再Google了...
我的机器安装了DeviceUpdate 4.为了找出问题所在,我打开deviceupdate4.config 和 machine.config两个文件...经过仔细研究,也算是明白了个大概吧...
在web.config中增加的那个device段中有一个inheritsFrom="HtmlDeviceAdapters",我开始以 为这是一个类,结果在MSDN中却没找到,呵呵...原来它是定义在machine.config中的一个段落...说明,我现在web.config中 定义的htmlDeviceAdapters device来自于machine.config中的HtmlDeviceAdapters...而在HtmlDeviceAdapters中定义了各种 控件的实现,原来如此....
在machine.config中我发现了许多与xhtml相关的内容,都是update 4 增加进去了,既然IIS对Openwave 6.2 返回是xhtml的类型,那问题估计就出在这里了,我应该再增加一下针对xhtml的device,让它也去找我定义的新控件,于是,我把 web.config改成以下样子:
<mobileControlscookielessDataDictionaryType="System.Web.Mobile.CookielessData">
<devicename="xhtmlLDeviceAdapters"inheritsFrom="XhtmlDeviceAdapters">
<controlname="cn.sharetop.model.comm.MultiLineTextBox,cn.sharetop.model"
adapter="cn.sharetop.model.comm.HTMLMultiLineTextBoxAdapter,cn.sharetop.model"/>
</device>
<devicename="wmlDeviceAdapters"inheritsFrom="WmlDeviceAdapters">
<controlname="cn.sharetop.model.comm.MultiLineTextBox,cn.sharetop.model"
adapter="cn.sharetop.model.comm.HTMLMultiLineTextBoxAdapter,cn.sharetop.model"/>
</device>
<devicename="htmlDeviceAdapters"inheritsFrom="HtmlDeviceAdapters">
<controlname="cn.sharetop.model.comm.MultiLineTextBox,cn.sharetop.model"
adapter="cn.sharetop.model.comm.HTMLMultiLineTextBoxAdapter,cn.sharetop.model"/>
</device>
</mobileControls>
定义三个device段落,分别来自于HtmlDeviceAdapters,XhtmlDeviceAdapters和WmlDeviceAdapters,让这三种设备都使用我们定义的MultiLineTextBox控件...
终于,我在两个模拟器和我的X859上都正确看到想要的结果了....说明现在,IIS对Html的设备,Xhtml的设备,以及Wml的设备都允许使用这个自定义控件了...
但是,还有一个问题,为什么我的Nokia 6680,却仍不能显示呢?
继续,在deviceupdate4.config中,我找到了针对nokia手机的设备定义,有3650却没有6680,这个好办,改吧,其 实这两款手机差不多的,都是S60平台,屏幕也一样大...于是我新增了一个6680设备,内容就与3650一样即可...OK了,我的Nokia 6680也可以看到这个多行输入框了...同样道理,为什么Openwave 7的wml也可以通过这个方式修正...不过我没做,因为我需要一个wml的设备.
这件事的解决过程中,我走了一些弯路....也记下来,以警示自己!!!
1.当我发现IIS返回WML的时候,我尝试了让这个控件的Adapter直接派生于WmlTextBoxAdapter,并且,修改了 web.config中的inheritsFrom为WmlDeviceAdapters,在Openwave 7中成功,于是我想让IIS针对所有设备都输出WML...真是太直了...我把pageAdapter都设成wmlPageAdapter了...结果 IE一访问,咣当弹出一个下载对话框,....呵呵....
2.我一直以为,我可以在代码中强制输出的类型,结果发现不行,IIS判断设备,并响应合适的ContentType,不需要由代码控制的,全在两个config中配置(只是这两个config也太复杂了)......
相关推荐
Flex是一款强大的RIA(Rich Internet Application)开发工具,由Adobe公司维护,广泛应用于构建高性能、交互丰富的Web应用。本文将重点讨论在Flex 3及Flex 4版本中如何实现`textarea`控件对HTML文本的支持。 ### 一...
在使用HTML开发商业网站的过程中,表单控件是不可或缺的一部分,它们用于收集用户输入的数据。在众多的表单元素中,`<textarea>` 控件扮演着重要的角色,它允许用户输入多行文本,例如用于评论、留言或者填写长篇...
在前端开发中,textarea控件是非常常用的表单控件之一,但是在某些情况下,我们可能需要让textarea控件的滚动条滚动到最下方,以下是实现此功能的相关知识点。 一、使用scrollTop属性 在HTML中,textarea控件的...
它们分为两类:一类是通用的HTML控件,如HtmlButton、HtmlImage和HtmlTextArea,它们继承自System.Web.UI.Control,并且拥有共同的属性,如Disabled、Style、TagName和Visible。另一类是特定类型的HTML控件,如...
ASP.NET Web文本编辑器控件是开发Web应用时不可或缺的一部分,尤其在构建内容管理系统或论坛等需要用户输入丰富格式文本的场景中。CKEditor是一款功能强大的Web文本编辑器,它提供了丰富的文本编辑功能,如文本格式...
"Draw2D模拟SWT控件之TextField、TextArea"这个主题聚焦于使用Draw2D库来模仿SWT(Standard Widget Toolkit)中的两种基本输入控件:TextField和TextArea。SWT是Eclipse基金会的一个开源项目,用于构建原生外观的...
在使用Flex进行Web应用开发时,有时会遇到一个让人头疼的问题:在非主应用程序环境下(例如嵌入到HTML页面中的SWF文件),textarea和input控件无法正常输入中文字符。这不仅影响用户体验,还可能导致功能上的缺失。...
在不同的应用场景下,如Web开发中的HTML Textarea元素,换行处理的方式也会有所不同,可能涉及到CSS样式、HTML属性以及JavaScript脚本的交互作用。因此,深入理解不同技术栈下的换行机制,对于提高应用的可用性和...
在VC++开发中,将内容写入到TextArea控件通常是为了解决用户界面与程序数据交互的问题。在传统的MFC框架下,TextArea通常指的是编辑框(CEdit)或多行编辑框(CMultiLine),而这里提及的是非COM方式,意味着我们将...
在Web应用测试中,Web控件测试是至关重要的环节,它涉及到用户界面的交互性和数据的正确性。以下是对Web控件测试的详细总结,旨在提升测试人员的测试能力。 首先,进行界面检查。测试开始时,应先确认页面的基本...
总的来说,"textarea 输入框自适应高度"是一个提升用户体验的重要技巧,涉及到前端开发中的DOM操作、事件监听和动态样式修改。通过实践和理解这样的技术,开发者可以构建出更智能、更易用的web应用。
在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,它结合了HTML、Java代码和脚本元素。当用户在网页上填写表单,特别是使用TextArea输入多行文本时,开发者需要从服务器端获取这些数据进行...
在网页开发过程中,`textarea`是一个非常重要的HTML元素,主要用于接收多行文本输入。在本文中,我们将详细介绍如何使`textarea`随内容的高度固定而自动增宽,以及宽度固定时如何自动增高,并对`wrap`属性的几种设置...
表单控件——文本域textarea</title> <!-- 最新版本的 Bootstrap 核心 CSS 文件 --> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css
在Web开发中,了解和熟练使用这些控件是至关重要的。本主题将详细探讨一些常用的HTML控件,以及与.NET、C#框架相关的自定义控件。 1. HTML基础控件:HTML提供了多种内置控件,如`<input>`(文本输入框、复选框、...
`textarea`是HTML中用于创建多行文本输入控件的一个关键元素,常用于收集用户的大段文本输入,如留言、评论或表单填写中的详细说明部分。与`input`类型相比,`textarea`提供了更大的文本编辑区域,支持多行输入,...
【1+X Web前端开发初级】样题二涵盖了理论与实操两大部分,旨在测试学习者在Web前端开发领域的基础知识和实践能力。这个压缩包包含了三个文件:`Web前端开发初级实操考试_V1.0.docx`、`Web前端开发初级理论考试_V1.0...
二、TextArea_HTMLEditor简介 EXTJS中的TextArea_HTMLEditor是用于创建富文本编辑器的组件,它基于IFrame技术,提供了丰富的编辑功能,如字体样式调整、段落格式化、插入图片、链接等。这个组件允许用户以WYSIWYG...