﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Felix Woo &#187; ASP.net</title>
	<atom:link href="http://www.felixwoo.com/tag/aspnet/feed" rel="self" type="application/rss+xml" />
	<link>http://www.felixwoo.com</link>
	<description>世界因我存在</description>
	<lastBuildDate>Thu, 10 Nov 2011 11:54:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>ASP.net Menu控件在Google Chrome和Safari浏览器下显示错位的解决办法</title>
		<link>http://www.felixwoo.com/archives/429</link>
		<comments>http://www.felixwoo.com/archives/429#comments</comments>
		<pubDate>Mon, 02 Mar 2009 05:30:26 +0000</pubDate>
		<dc:creator>Felix</dc:creator>
				<category><![CDATA[开发技术]]></category>
		<category><![CDATA[ASP.net]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[webkit]]></category>
		<category><![CDATA[菜单]]></category>

		<guid isPermaLink="false">http://www.felixwoo.com/?p=429</guid>
		<description><![CDATA[在ASP.NET网站项目中添加Others.browser内容如下： 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 &#60;browsers&#62; &#60;browser id=&#34;Safari3&#34; parentID=&#34;Safari1Plus&#34;&#62; &#60;identification&#62; &#60;useragent match=&#34;Safari/\d+\.\d+&#34; /&#62; &#60;/identification&#62; &#60;capture&#62; &#60;useragent match=&#34;Version/(?'version'\d+\.\d+)&#34; /&#62; &#60;/capture&#62; &#60;capabilities&#62; &#60;capability name=&#34;browser&#34; value=&#34;Safari3&#34; /&#62; &#60;capability name=&#34;version&#34; value=&#34;${version}&#34; /&#62; &#60;/capabilities&#62; &#60;controladapters&#62; &#60;adapter controlType=&#34;System.Web.UI.WebControls.Menu&#34; adapterType=&#34;&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>在ASP.NET网站项目中添加Others.browser内容如下：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;browsers<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;browser</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;Safari3&quot;</span> <span style="color: #000066;">parentID</span>=<span style="color: #ff0000;">&quot;Safari1Plus&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;identification<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;useragent</span> <span style="color: #000066;">match</span>=<span style="color: #ff0000;">&quot;Safari/\d+\.\d+&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/identification<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;capture<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;useragent</span> <span style="color: #000066;">match</span>=<span style="color: #ff0000;">&quot;Version/(?'version'\d+\.\d+)&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/capture<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;capabilities<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;capability</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;browser&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;Safari3&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;capability</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;version&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;${version}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/capabilities<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;controladapters<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;adapter</span> <span style="color: #000066;">controlType</span>=<span style="color: #ff0000;">&quot;System.Web.UI.WebControls.Menu&quot;</span></span>
<span style="color: #009900;">                     <span style="color: #000066;">adapterType</span>=<span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/controladapters<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/browser<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;browser</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;GoogleChrome&quot;</span> <span style="color: #000066;">parentID</span>=<span style="color: #ff0000;">&quot;Safari3&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;identification<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;useragent</span> <span style="color: #000066;">match</span>=<span style="color: #ff0000;">&quot;Chrome/(?'version'\d+\.\d+)&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/identification<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;capabilities<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;capability</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;browser&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;Googlebot&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/capabilities<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/browser<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/browsers<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.felixwoo.com/archives/429/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>使用ASP.NET AJAX开发文本框自动提示功能</title>
		<link>http://www.felixwoo.com/archives/181</link>
		<comments>http://www.felixwoo.com/archives/181#comments</comments>
		<pubDate>Sat, 04 Nov 2006 12:20:02 +0000</pubDate>
		<dc:creator>Felix</dc:creator>
				<category><![CDATA[开发技术]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP.net]]></category>

		<guid isPermaLink="false">http://219.234.88.162:81/?p=181</guid>
		<description><![CDATA[这两天尝试使用ASP.NET AJAX Extensions给ThinkPage的PageRank查询增加了文本框自动提示功能。当用户在输入网站地址的文本框中输入的时候会自动弹出一个下拉菜单，显示最近查询过的网站，并不断根据输入文本的内容缩小范围。比如：当输入“w”的时候，会列出所有w开头的网址，当输入到“www.f”的时候，就只显示www.felixwoo.com了。当点击下拉菜单中的一个网址后，会自动完成文本框中的内容。整个过程和IE的地址栏效果类似。显示效果如图： 这个功能是通过ASP.NET AJAX AutoCompleteExtender实现的，只需要几行代码即可搞定。首先需要在页面上添加asp:AutoCompleteExtender标记，别忘了之前要有asp:ScriptManager的声明。 &#60;asp:ScriptManager ID=&#34;ScriptManager&#34; runat=&#34;server&#34; /&#62;&#60;asp:AutoCompleteExtender ID=&#34;AutoCompleteExtender1&#34; TargetControlID=&#34;searchtext&#34;runat=&#34;server&#34; ServiceMethod=&#34;GetCompletionList&#34;ServicePath=&#34;~/SearchAutoComplete.asmx&#34; MinimumPrefixLength=&#34;1&#34; /&#62; 其中TargetControlID为输入网址的文本框的ID，ServicePath为得到网站列表的webservice地址，ServiceMethod即那个webservice中的具体方法，MinimumPrefixLength=1意思是当输入一个字符的时候即开始提示。 在SearchAutoComplete.asmx中要做的就是从数据库中返回最近查询过的网站，并通过prefixText参数来过滤出只以prefixText开头的网站，这样才能实现逐级提示的功能。SearchAutoComplete.asmx代码如下： [WebMethod] public string[] GetCompletionList(string prefixText, int count) { List&#60;string&#62; list = DataProvider.GetURLList(); foreach (string s in list) { if (s.StartsWith(prefixText)) { list.Add(s); } } return list.ToArray(); } 其中List&#60;string&#62; list是声明的了一个string的范型，这个是.net 2.0中新增的功能，避免了原来使用ArrayList带来的装箱和拆箱的性能消耗。DataProvider.GetURLList()从从数据库返回所有网站列表，返回类型自然也是List&#60;string&#62;。其他的代码都很简单，相信一看就明白了。 就短短的几行代码就可以实现如此有趣和实用的功能，不能不说ASP.NET AJAX为我们做了太多。]]></description>
			<content:encoded><![CDATA[<p>这两天尝试使用ASP.NET AJAX Extensions给<a href="http://www.thinkpage.cn/pagerank/" title="http://www.thinkpage.cn/pagerank/" target="_blank">ThinkPage的PageRank查询</a>增加了文本框自动提示功能。当用户在输入网站地址的文本框中输入的时候会自动弹出一个下拉菜单，显示最近查询过的网站，并不断根据输入文本的内容缩小范围。比如：当输入“w”的时候，会列出所有w开头的网址，当输入到“www.f”的时候，就只显示www.felixwoo.com了。当点击下拉菜单中的一个网址后，会自动完成文本框中的内容。整个过程和IE的地址栏效果类似。显示效果如图：<br /><a href="http://www.felixwoo.com/wp-content/uploads/attachments/200611/04_123834_autocomplete.jpg" target="_blank"><img src="http://www.felixwoo.com/wp-content/uploads/attachments/200611/04_123834_autocomplete.jpg" alt="http://www.felixwoo.com/wp-content/uploads/attachments/200611/04_123834_autocomplete.jpg" /></a></p>
<p>这个功能是通过ASP.NET AJAX AutoCompleteExtender实现的，只需要几行代码即可搞定。<br />首先需要在页面上添加asp:AutoCompleteExtender标记，别忘了之前要有asp:ScriptManager的声明。<br />
<blockquote>&lt;asp:ScriptManager ID=&quot;ScriptManager&quot; runat=&quot;server&quot; /&gt;<br />&lt;asp:AutoCompleteExtender ID=&quot;AutoCompleteExtender1&quot; TargetControlID=&quot;searchtext&quot;<br />runat=&quot;server&quot; ServiceMethod=&quot;GetCompletionList&quot;<br />ServicePath=&quot;~/SearchAutoComplete.asmx&quot; MinimumPrefixLength=&quot;1&quot; /&gt;</p></blockquote>
<p>其中TargetControlID为输入网址的文本框的ID，ServicePath为得到网站列表的webservice地址，ServiceMethod即那个webservice中的具体方法，MinimumPrefixLength=1意思是当输入一个字符的时候即开始提示。</p>
<p>在SearchAutoComplete.asmx中要做的就是从数据库中返回最近查询过的网站，并通过prefixText参数来过滤出只以prefixText开头的网站，这样才能实现逐级提示的功能。SearchAutoComplete.asmx代码如下：</p>
<blockquote><p>[WebMethod] <br />public string[] GetCompletionList(string prefixText, int count) <br />{ <br />   List&lt;string&gt; list = DataProvider.GetURLList();<br />   foreach (string s in list) <br />   { <br />      if (s.StartsWith(prefixText)) <br />      { <br />         list.Add(s); <br />      } <br />   } <br />   return list.ToArray(); <br />} </p></blockquote>
<p>其中List&lt;string&gt; list是声明的了一个string的范型，这个是.net 2.0中新增的功能，避免了原来使用ArrayList带来的装箱和拆箱的性能消耗。DataProvider.GetURLList()从从数据库返回所有网站列表，返回类型自然也是List&lt;string&gt;。其他的代码都很简单，相信一看就明白了。</p>
<p>就短短的几行代码就可以实现如此有趣和实用的功能，不能不说ASP.NET AJAX为我们做了太多。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.felixwoo.com/archives/181/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>微软发布ASP.NET AJAX 1.0 Beta</title>
		<link>http://www.felixwoo.com/archives/174</link>
		<comments>http://www.felixwoo.com/archives/174#comments</comments>
		<pubDate>Sun, 22 Oct 2006 11:45:56 +0000</pubDate>
		<dc:creator>Felix</dc:creator>
				<category><![CDATA[闲言碎语]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP.net]]></category>
		<category><![CDATA[微软]]></category>

		<guid isPermaLink="false">http://219.234.88.162:81/?p=174</guid>
		<description><![CDATA[微软最近发布了ASP.NET AJAX 1.0的官方测试版本，最终版将在今年底发布，并与ASP.NET 2.0整合。这玩意原来叫Atlas，现在竟然彻头彻尾的变了，我想最郁闷的莫过于Dflying Chen了，他即将出版的《Atlas程序设计》看来前功尽弃了。感叹啊，做程序员和做小姐没什么区别，都是靠吃青春饭。等正式版出来以后再去更新ThinkPage吧，ThinkPage的开发告一段落，继续回到我的English Kingdom。 注：ASP.NET AJAX是微软进军跨平台网络功能领域的作品，用于异步JavaScript的网络开发，可以让开发人员开发出更具互动行动网络应用，提高用户个性化水平。ASP.NET AJAX 1.0的主要功能有：异步客户端到服务器网络、服务器端ScriptManager和ScriptManagerProxy控件、客户端Trace类、Timer控件、Selector控件、JavaScript认证等等。微软ASP.NET AJAX官方网站是http://ajax.asp.net/，在这里你可以找到程序下载、说明文档、演示视频、交流社区等资源。]]></description>
			<content:encoded><![CDATA[<p>微软最近发布了ASP.NET AJAX 1.0的官方测试版本，最终版将在今年底发布，并与ASP.NET 2.0整合。这玩意原来叫Atlas，现在竟然彻头彻尾的变了，我想最郁闷的莫过于<a href="http://www.cnblogs.com/dflying/archive/2006/10/20/535210.html" title="http://www.cnblogs.com/dflying/archive/2006/10/20/535210.html" target="_blank">Dflying Chen</a>了，他即将出版的《Atlas程序设计》看来前功尽弃了。感叹啊，做程序员和做小姐没什么区别，都是靠吃青春饭。等正式版出来以后再去更新ThinkPage吧，ThinkPage的开发告一段落，继续回到我的English Kingdom。</p>
<p>注：ASP.NET AJAX是微软进军跨平台网络功能领域的作品，用于异步JavaScript的网络开发，可以让开发人员开发出更具互动行动网络应用，提高用户个性化水平。ASP.NET AJAX 1.0的主要功能有：异步客户端到服务器网络、服务器端ScriptManager和ScriptManagerProxy控件、客户端Trace类、Timer控件、Selector控件、JavaScript认证等等。微软ASP.NET AJAX官方网站是http://ajax.asp.net/，在这里你可以找到程序下载、说明文档、演示视频、交流社区等资源。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.felixwoo.com/archives/174/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

