教程集 www.jiaochengji.com
教程集 >  脚本编程  >  Asp.net  >  正文 Asp.Net MVC实践

Asp.Net MVC实践

发布时间:2016-12-05   编辑:jiaochengji.com
教程集为您提供Asp.Net MVC实践等资源,欢迎您收藏本站,我们将为您提供最新的Asp.Net MVC实践资源
<table cellspacing="0" cellpadding="0" width="100%"> <tbody> <tr> <td valign="top" nowrap="nowrap" align="center">
淘宝书店:http://shop35357269.taobao.com
alimama_pid="mm_10096109_566393_892186"; alimama_titlecolor="0000FF"; alimama_descolor ="000000"; alimama_bgcolor="FFFFFF"; alimama_bordercolor="E6E6E6"; alimama_linkcolor="008000"; alimama_bottomcolor="FFFFFF"; alimama_anglesize="0"; alimama_bgpic="0"; alimama_icon="0"; alimama_sizecode="11"; alimama_width=760; alimama_height=90; alimama_type=2;
alimama_pid="mm_10096109_566393_1843170"; alimama_titlecolor="0000FF"; alimama_descolor ="000000"; alimama_bgcolor="FFFFFF"; alimama_bordercolor="E6E6E6"; alimama_linkcolor="008000"; alimama_bottomcolor="FFFFFF"; alimama_anglesize="0"; alimama_bgpic="0"; alimama_icon="0"; alimama_sizecode="12"; alimama_width=468; alimama_height=60; alimama_type=2;
</td> </tr> <tr> <td> <table style="WIDTH: 100%" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top" align="left">
google_ad_client = "pub-6430022987645146"; google_ad_slot = "8067578699"; google_ad_width = 250; google_ad_height = 250;
<span style="FONT-SIZE: 10pt">Rss</span><span style="FONT-SIZE: 10pt">在</span><span style="FONT-SIZE: 10pt">web</span><span style="FONT-SIZE: 10pt">系统中相当常见</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">主要用于快速浏览站点更新的文章等内容</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">是</span><span style="FONT-SIZE: 10pt">web2.0</span><span style="FONT-SIZE: 10pt">的主要特性之一</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">以前我们是如何来实现</span><span style="FONT-SIZE: 10pt">Rss</span><span style="FONT-SIZE: 10pt">输入的呢</span><span style="FONT-SIZE: 10pt">?</span><span style="FONT-SIZE: 10pt">在</span><span style="FONT-SIZE: 10pt">aspx</span><span style="FONT-SIZE: 10pt">中输出</span><span style="FONT-SIZE: 10pt">?</span><span style="FONT-SIZE: 10pt">自定义</span><span style="FONT-SIZE: 10pt">HttpHandle?</span><span style="FONT-SIZE: 10pt">自然是可以</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">但是到了</span><span style="FONT-SIZE: 10pt">MVC</span><span style="FONT-SIZE: 10pt">框架中</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">我们可以选中更好的方式</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">自定义</span><span style="FONT-SIZE: 10pt">ActionResult.</span>
<span style="FONT-SIZE: 10pt">根据官方资料</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">每个</span><span style="FONT-SIZE: 10pt">Action</span><span style="FONT-SIZE: 10pt">都要返回一个</span><span style="FONT-SIZE: 10pt">ActionResult</span><span style="FONT-SIZE: 10pt">来执行</span><span style="FONT-SIZE: 10pt">View,</span><span style="FONT-SIZE: 10pt">而</span><span style="FONT-SIZE: 10pt">ActionResult</span><span style="FONT-SIZE: 10pt">是一个抽象类</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">我们现在必须的就是自定义一个</span><span style="FONT-SIZE: 10pt">RssAction.</span> <span style="FONT-SIZE: 10pt">首先根据需要建立一个</span><span style="FONT-SIZE: 10pt">ArticleResultDemo</span><span style="FONT-SIZE: 10pt">的</span><span style="FONT-SIZE: 10pt">Asp.Net Web Application.</span><span style="FONT-SIZE: 10pt">然后根据</span><span style="FONT-SIZE: 10pt">mvc</span><span style="FONT-SIZE: 10pt">约定建立相关文件夹和文件</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">为了实现</span><span style="FONT-SIZE: 10pt">rss</span><span style="FONT-SIZE: 10pt">输出</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">我添加以下文件</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">如图</span><span style="FONT-SIZE: 10pt">:


 
<span style="FONT-SIZE: 10pt">在</span><span style="FONT-SIZE: 10pt">Models</span><span style="FONT-SIZE: 10pt">中</span><span style="FONT-SIZE: 10pt">,ArticleEntity</span><span style="FONT-SIZE: 10pt">是</span><span style="FONT-SIZE: 10pt">Article</span><span style="FONT-SIZE: 10pt">对应实体</span><span style="FONT-SIZE: 10pt">,ArticleModel</span><span style="FONT-SIZE: 10pt">有一个测试方法供返回一组</span><span style="FONT-SIZE: 10pt">ArticleEntity,EntityExtensions</span><span style="FONT-SIZE: 10pt">是对</span><span style="FONT-SIZE: 10pt">Entity</span><span style="FONT-SIZE: 10pt">提供一组扩展方法</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">进行比如生成</span><span style="FONT-SIZE: 10pt">rss</span><span style="FONT-SIZE: 10pt">等功能</span><span style="FONT-SIZE: 10pt">,RssEntity</span><span style="FONT-SIZE: 10pt">是提供</span><span style="FONT-SIZE: 10pt">rss</span><span style="FONT-SIZE: 10pt">数据实体</span><span style="FONT-SIZE: 10pt">.</span><span style="FONT-SIZE: 10pt">在</span><span style="FONT-SIZE: 10pt">Controllers</span><span style="FONT-SIZE: 10pt">中</span><span style="FONT-SIZE: 10pt">,RssResult</span><span style="FONT-SIZE: 10pt">就是我们扩展的</span><span style="FONT-SIZE: 10pt">ActionResult,DemoController</span><span style="FONT-SIZE: 10pt">是扩展的</span><span style="FONT-SIZE: 10pt">Controller</span><span style="FONT-SIZE: 10pt">类</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">提供快捷的</span><span style="FONT-SIZE: 10pt">Rss</span><span style="FONT-SIZE: 10pt">输出方法</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">这是一个抽象类</span><span style="FONT-SIZE: 10pt">,ArticleController</span><span style="FONT-SIZE: 10pt">是当前</span><span style="FONT-SIZE: 10pt">Demo</span><span style="FONT-SIZE: 10pt">的主控制类</span><span style="FONT-SIZE: 10pt">.</span>
<span style="FONT-SIZE: 10pt">关于这几个</span><span style="FONT-SIZE: 10pt">Entity</span><span style="FONT-SIZE: 10pt">类要说明下</span><span style="FONT-SIZE: 10pt">,RssEntity</span><span style="FONT-SIZE: 10pt">文件中包含</span><span style="FONT-SIZE: 10pt">RssEntity,RssImage,RssItem3</span><span style="FONT-SIZE: 10pt">个类</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">对整个</span><span style="FONT-SIZE: 10pt">rss</span><span style="FONT-SIZE: 10pt">数据进行了封装</span><span style="FONT-SIZE: 10pt">.EntityExtersions</span><span style="FONT-SIZE: 10pt">类提供一组扩展方法来实现实体</span><span style="FONT-SIZE: 10pt">-rss xml</span><span style="FONT-SIZE: 10pt">数据的转换</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">具体</span><span style="FONT-SIZE: 10pt">EntityExtersions</span><span style="FONT-SIZE: 10pt">的代码如下</span><span style="FONT-SIZE: 10pt">:
</span>
<span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">string</span><span style="COLOR: #000000"> ToXmlString(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> RssItem item)
        </span><span id="Codehighlighter1_60_281_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_60_281_Open_Text"><span style="COLOR: #000000">{
            StringBuilder sb </span><span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> StringBuilder();
            sb.AppendLine(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"><item></span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">);
            sb.Append(ToXmlItem</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">RssItem</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">(item));
            sb.AppendLine(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"></item></span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">);
            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> sb.ToString();
        }</span></span><span style="COLOR: #000000">

        </span><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">string</span><span style="COLOR: #000000"> ToXmlString(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> RssImage image)
        </span><span id="Codehighlighter1_353_578_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_353_578_Open_Text"><span style="COLOR: #000000">{
            StringBuilder sb </span><span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> StringBuilder();
            sb.AppendLine(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"><image></span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">);
            sb.Append(ToXmlItem</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">RssImage</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">(image));
            sb.AppendLine(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"></image></span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">);
            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> sb.ToString();
        }</span></span><span style="COLOR: #000000">

        </span><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">string</span><span style="COLOR: #000000"> ToXmlString(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> RssEntity rss)
        </span><span id="Codehighlighter1_649_1049_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_649_1049_Open_Text"><span style="COLOR: #000000">{
            StringBuilder sb </span><span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> StringBuilder();
            sb.AppendLine(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"><?xml version=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800080">1.0</span><span style="COLOR: #000000"></span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> encoding=</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">UTF</span><span style="COLOR: #000000">-</span><span style="COLOR: #800080">8</span><span style="COLOR: #000000"></span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">?></span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">);
            sb.AppendLine(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"><rss version=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800080">2.0</span><span style="COLOR: #000000"></span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">></span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">);
            sb.AppendLine(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"><channel></span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">);
            sb.AppendLine(ToXmlItem</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">RssEntity</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">(rss));
            sb.AppendLine(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"></channel></span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">);
            sb.AppendLine(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"></rss></span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">);
            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> sb.ToString();
        }</span></span><span style="COLOR: #000000">

        </span><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> RssEntity ToDefaultRss(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> IList</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">ArticleEntity</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> articleList)
        </span><span id="Codehighlighter1_1143_2416_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_1143_2416_Open_Text"><span style="COLOR: #000000">{
            RssEntity rss </span><span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> RssEntity()
            </span><span id="Codehighlighter1_1201_1861_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_1201_1861_Open_Text"><span style="COLOR: #000000">{
                Title </span><span style="COLOR: #000000">=</span> <span style="COLOR: #800000">"</span><span style="COLOR: #800000">ArticleResult Demo Rss.</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,
                Copyright </span><span style="COLOR: #000000">=</span> <span style="COLOR: #800000">"</span><span style="COLOR: #800000">Copyright 2008 Leven</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,
                Generator </span><span style="COLOR: #000000">=</span> <span style="COLOR: #800000">"</span><span style="COLOR: #800000">ArticleResult Demo</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,
                Link </span><span style="COLOR: #000000">=</span> <span style="COLOR: #800000">"</span><span style="COLOR: #800000">http://blog.leven.com.cn/</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,
                Description </span><span style="COLOR: #000000">=</span> <span style="COLOR: #800000">"</span><span style="COLOR: #800000">ArticleResult Demo Rss - a demo of asp.net mvc priview3.</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,
                WebMaster </span><span style="COLOR: #000000">=</span> <span style="COLOR: #800000">"</span><span style="COLOR: #800000">leven</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,
                Image </span><span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> RssImage()
                </span><span id="Codehighlighter1_1590_1847_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_1590_1847_Open_Text"><span style="COLOR: #000000">{
                    Link </span><span style="COLOR: #000000">=</span> <span style="COLOR: #800000">"</span><span style="COLOR: #800000">http://blog.leven.com.cn/images/logo.jpg</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,
                    Title </span><span style="COLOR: #000000">=</span> <span style="COLOR: #800000">"</span><span style="COLOR: #800000">ArticleResult Demo</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,
                    Url </span><span style="COLOR: #000000">=</span> <span style="COLOR: #800000">"</span><span style="COLOR: #800000">http://blog.leven.com.cn/</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,
                    Description </span><span style="COLOR: #000000">=</span> <span style="COLOR: #800000">"</span><span style="COLOR: #800000">ArticleResult Demo Image.</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">
                }</span></span><span style="COLOR: #000000">
            }</span></span><span style="COLOR: #000000">;
            </span><span style="COLOR: #0000ff">foreach</span><span style="COLOR: #000000"> (ArticleEntity article </span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000"> articleList)
            </span><span id="Codehighlighter1_1934_2382_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_1934_2382_Open_Text"><span style="COLOR: #000000">{
                rss.Items.Add(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> RssItem()
                </span><span id="Codehighlighter1_1996_2366_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_1996_2366_Open_Text"><span style="COLOR: #000000">{
                    Title </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> article.Title,
                    Author </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> article.PostUser,
                    Category </span><span style="COLOR: #000000">=</span> <span style="COLOR: #800000">"</span><span style="COLOR: #800000">Default Category</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,
                    Link </span><span style="COLOR: #000000">=</span> <span style="COLOR: #800000">"</span><span style="COLOR: #800000">http://blog.leven.com.cn/</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,
                    Guid </span><span style="COLOR: #000000">=</span> <span style="COLOR: #800000">"</span><span style="COLOR: #800000">http://blog.leven.com.cn/</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,
                    PubData </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> article.PostTime,
                    Description </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> article.Content
                }</span></span><span style="COLOR: #000000">);
            }</span></span><span style="COLOR: #000000">
            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> rss;
        }</span></span><span style="COLOR: #000000">

        </span><span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">string</span><span style="COLOR: #000000"> ToXmlItem</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">DType</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">(DType data)
            </span><span style="COLOR: #0000ff">where</span><span style="COLOR: #000000"> DType : </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">
        </span><span id="Codehighlighter1_2517_3681_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_2517_3681_Open_Text"><span style="COLOR: #000000">{
            StringBuilder sb </span><span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> StringBuilder();
            Type type </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> data.GetType();
            PropertyInfo[] pis </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> type.GetProperties();
            </span><span style="COLOR: #0000ff">foreach</span><span style="COLOR: #000000"> (PropertyInfo p </span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000"> pis)
            </span><span id="Codehighlighter1_2722_3637_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_2722_3637_Open_Text"><span style="COLOR: #000000">{
                </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (p.PropertyType </span><span style="COLOR: #000000">==</span> <span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">(DateTime))
                </span><span id="Codehighlighter1_2796_2920_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_2796_2920_Open_Text"><span style="COLOR: #000000">{
                    sb.AppendFormat(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"><{0}>{1:R}</{0}>rn</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">, p.Name.ToLower(), p.GetValue(data, </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">));
                }</span></span><span style="COLOR: #000000">
                </span><span style="COLOR: #0000ff">else</span> <span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (p.PropertyType </span><span style="COLOR: #000000">==</span> <span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">(RssImage))
                </span><span id="Codehighlighter1_2998_3102_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_2998_3102_Open_Text"><span style="COLOR: #000000">{
                    sb.AppendLine(((RssImage)p.GetValue(data, </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)).ToXmlString());
                }</span></span><span style="COLOR: #000000">
                </span><span style="COLOR: #0000ff">else</span> <span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (p.PropertyType </span><span style="COLOR: #000000">==</span> <span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">(IList</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">RssItem</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">))
                </span><span id="Codehighlighter1_3186_3451_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_3186_3451_Open_Text"><span style="COLOR: #000000">{
                    IList</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">RssItem</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> rssItems </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> p.GetValue(data, </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">) </span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000"> IList</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">RssItem</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">;
                    </span><span style="COLOR: #0000ff">foreach</span><span style="COLOR: #000000"> (RssItem item </span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000"> rssItems)
                    </span><span id="Codehighlighter1_3351_3433_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_3351_3433_Open_Text"><span style="COLOR: #000000">{
                        sb.AppendLine(item.ToXmlString());
                    }</span></span><span style="COLOR: #000000">
                }</span></span><span style="COLOR: #000000">
                </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">
                </span><span id="Codehighlighter1_3489_3623_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_3489_3623_Open_Text"><span style="COLOR: #000000">{
                    sb.AppendFormat(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"><{0}><![CDATA[{1}]]></{0}>rn</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">, p.Name.ToLower(), p.GetValue(data, </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">));
                }</span></span><span style="COLOR: #000000">
            }</span></span><span style="COLOR: #000000">
            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> sb.ToString();
        }</span></span><span style="COLOR: #000000">
</span> </span> 
<span style="FONT-SIZE: 10pt">通过这些方法</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">我们可以方便生成</span><span style="FONT-SIZE: 10pt">rss</span><span style="FONT-SIZE: 10pt">数据</span><span style="FONT-SIZE: 10pt">.</span>
<span style="FONT-SIZE: 10pt">再看</span><span style="FONT-SIZE: 10pt">RssResult</span><span style="FONT-SIZE: 10pt">类</span><span style="FONT-SIZE: 10pt">.</span><span style="FONT-SIZE: 10pt">该类继承自</span><span style="FONT-SIZE: 10pt">ActionResult</span><span style="FONT-SIZE: 10pt">类</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">实现了</span><span style="FONT-SIZE: 10pt">ExecuteResult</span><span style="FONT-SIZE: 10pt">方法</span><span style="FONT-SIZE: 10pt">.</span><span style="FONT-SIZE: 10pt">该方法为</span><span style="FONT-SIZE: 10pt">: ExecuteResult(<span style="COLOR: #2b91af">ControllerContext</span> context)</span><span style="FONT-SIZE: 10pt">我们可以在其中直接将</span><span style="FONT-SIZE: 10pt">rss</span><span style="FONT-SIZE: 10pt">数据输出</span><span style="FONT-SIZE: 10pt">.</span><span style="FONT-SIZE: 10pt">这便是</span><span style="FONT-SIZE: 10pt">ActionResult</span><span style="FONT-SIZE: 10pt">的魅力了</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">我们通过</span><span style="FONT-SIZE: 10pt">RssEntity RssAction</span><span style="FONT-SIZE: 10pt">完全对实体</span><span style="FONT-SIZE: 10pt">-xml</span><span style="FONT-SIZE: 10pt">输出进行了封装</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">使得程序可以非常方便的实现</span><span style="FONT-SIZE: 10pt">rss</span><span style="FONT-SIZE: 10pt">输出</span><span style="FONT-SIZE: 10pt">.</span><span style="FONT-SIZE: 10pt">现给出</span><span style="FONT-SIZE: 10pt">RssResult</span><span style="FONT-SIZE: 10pt">的代码</span><span style="FONT-SIZE: 10pt">:
</span> 
<span style="FONT-SIZE: 10pt">由于这两个</span><span style="FONT-SIZE: 10pt">Rss</span><span style="FONT-SIZE: 10pt">方法并非</span><span style="FONT-SIZE: 10pt">Action,</span><span style="FONT-SIZE: 10pt">因此加上了</span><span style="FONT-SIZE: 10pt">[NonAction]</span><span style="FONT-SIZE: 10pt">的</span><span style="FONT-SIZE: 10pt">Attubite.</span>
<span style="FONT-SIZE: 10pt">现在我们再使用就非常方便了</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">在</span><span style="FONT-SIZE: 10pt">ArticleController</span><span style="FONT-SIZE: 10pt">中</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">实现一个</span><span style="FONT-SIZE: 10pt">Rss</span><span style="FONT-SIZE: 10pt">方法
</span> 
<span style="FONT-SIZE: 10pt">一部直接输出了</span><span style="FONT-SIZE: 10pt">rss.</span><span style="FONT-SIZE: 10pt">最后修改</span><span style="FONT-SIZE: 10pt">web.config,</span><span style="FONT-SIZE: 10pt">添加</span><span style="FONT-SIZE: 10pt">route</span><span style="FONT-SIZE: 10pt">等完成之后</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">执行图如下</span><span style="FONT-SIZE: 10pt">:

  </span>
<span style="FONT-SIZE: 10pt">说明一下</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">在</span><span style="FONT-SIZE: 10pt">priview3</span><span style="FONT-SIZE: 10pt">的官方说明中</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">为了使得默认首页可用</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">可以添加一个</span><span style="FONT-SIZE: 10pt">default.aspx</span><span style="FONT-SIZE: 10pt">文件</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">然后在页面中加入一行</span>
<span style="FONT-SIZE: 10pt; BACKGROUND: yellow"><%</span><span style="FONT-SIZE: 10pt"> Response.Redirect(<span style="COLOR: #a31515">"article/rss"</span>)<span style="BACKGROUND: yellow">%></span></span>
<span style="FONT-SIZE: 10pt">我看到有朋友质疑说这个语法错误了</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">没有加分号</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">其实这是</span><span style="FONT-SIZE: 10pt">.net</span><span style="FONT-SIZE: 10pt">默认语言的问题</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">如果你不修改</span><span style="FONT-SIZE: 10pt">.net</span><span style="FONT-SIZE: 10pt">的配置</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">默认</span><span style="FONT-SIZE: 10pt">aspx</span><span style="FONT-SIZE: 10pt">的语言是</span><span style="FONT-SIZE: 10pt">vb.net</span><span style="FONT-SIZE: 10pt">的</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">因此这行是没有任何问题的</span><span style="FONT-SIZE: 10pt">.</span>
<span style="FONT-SIZE: 10pt">最后给出该</span><span style="FONT-SIZE: 10pt">Demo</span><span style="FONT-SIZE: 10pt">的全部工程文件下载</span><span style="FONT-SIZE: 10pt">.</span>
点击下载该工程文件 
个人Blog同步更新:http://blog.leven.com.cn/Article_28.aspx
<span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> ActionResult Rss()
        </span><span id="Codehighlighter1_34_141_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_34_141_Open_Text"><span style="COLOR: #000000">{
            RssEntity rss </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ArticleModel.GetList().ToDefaultRss();
            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> Rss(rss);
        }</span></span><span style="COLOR: #000000">
</span>
<span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> Encoding ContentEncoding </span><span id="Codehighlighter1_32_45_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_32_45_Open_Text"><span style="COLOR: #000000">{ </span><span style="COLOR: #0000ff">get</span><span style="COLOR: #000000">; </span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">; }</span></span><span style="COLOR: #000000">

        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> RssEntity Data </span><span id="Codehighlighter1_77_90_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_77_90_Open_Text"><span style="COLOR: #000000">{ </span><span style="COLOR: #0000ff">get</span><span style="COLOR: #000000">; </span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">; }</span></span><span style="COLOR: #000000">

        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> RssResult()
        </span><span id="Codehighlighter1_127_138_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_127_138_Open_Text"><span style="COLOR: #000000">{
        }</span></span><span style="COLOR: #000000">

        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> RssResult(Encoding encode)
        </span><span id="Codehighlighter1_190_239_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_190_239_Open_Text"><span style="COLOR: #000000">{
            ContentEncoding </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> encode;
        }</span></span><span style="COLOR: #000000">

        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> RssResult(RssEntity data, Encoding encode)
        </span><span id="Codehighlighter1_307_381_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_307_381_Open_Text"><span style="COLOR: #000000">{
            Data </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> data;
            ContentEncoding </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> encode;
        }</span></span><span style="COLOR: #000000">

        </span><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">override</span> <span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> ExecuteResult(ControllerContext context)
        </span><span id="Codehighlighter1_461_949_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_461_949_Open_Text"><span style="COLOR: #000000">{
            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (context </span><span style="COLOR: #000000">==</span> <span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)
            </span><span id="Codehighlighter1_508_583_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_508_583_Open_Text"><span style="COLOR: #000000">{
                </span><span style="COLOR: #0000ff">throw</span> <span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ArgumentNullException(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">context</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">);
            }</span></span><span style="COLOR: #000000">
            HttpResponseBase response </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> context.HttpContext.Response;
            response.ContentType </span><span style="COLOR: #000000">=</span> <span style="COLOR: #800000">"</span><span style="COLOR: #800000">text/xml</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">;
            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (ContentEncoding </span><span style="COLOR: #000000">!=</span> <span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)
            </span><span id="Codehighlighter1_754_829_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_754_829_Open_Text"><span style="COLOR: #000000">{
                response.ContentEncoding </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ContentEncoding;
            }</span></span><span style="COLOR: #000000">
            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (Data </span><span style="COLOR: #000000">!=</span> <span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)
            </span><span id="Codehighlighter1_872_939_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_872_939_Open_Text"><span style="COLOR: #000000">{
                response.Write(Data.ToXmlString());
            }</span></span><span style="COLOR: #000000">
        }</span></span><span style="COLOR: #000000">
</span>
 
<span style="FONT-SIZE: 10pt">为了更方便使用这个</span><span style="FONT-SIZE: 10pt">RssResult,</span><span style="FONT-SIZE: 10pt">我们可以对</span><span style="FONT-SIZE: 10pt">Controller</span><span style="FONT-SIZE: 10pt">进行进一步的改写</span><span style="FONT-SIZE: 10pt">,</span><span style="FONT-SIZE: 10pt">这儿我参照了</span><span style="FONT-SIZE: 10pt">Json</span><span style="FONT-SIZE: 10pt">方法的方式实现了</span><span style="FONT-SIZE: 10pt">DemoController,</span><span style="FONT-SIZE: 10pt">代码如下</span><span style="FONT-SIZE: 10pt">:
</span>
<span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">abstract</span> <span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> DemoController : Controller
    </span><span id="Codehighlighter1_54_441_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_54_441_Open_Text"><span style="COLOR: #000000">{
        [NonAction]
        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> ActionResult Rss(RssEntity rss, Encoding encode)
        </span><span id="Codehighlighter1_148_245_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_148_245_Open_Text"><span style="COLOR: #000000">{
            RssResult result </span><span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> RssResult(rss, encode);
            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> result;
        }</span></span><span style="COLOR: #000000">

        [NonAction]
        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> ActionResult Rss(RssEntity rss)
        </span><span id="Codehighlighter1_322_439_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Codehighlighter1_322_439_Open_Text"><span style="COLOR: #000000">{
            RssResult result </span><span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> RssResult();
            result.Data </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> rss;
            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> result;
        }</span></span><span style="COLOR: #000000">
}</span></span><span style="COLOR: #000000">
</span> </td> </tr> </tbody> </table> </td> </tr> <tr> <td valign="middle" nowrap="nowrap" align="center">
<table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td> alimama_pid="mm_10096109_566393_2123463"; alimama_titlecolor="0000FF"; alimama_descolor ="000000"; alimama_bgcolor="FFFFFF"; alimama_bordercolor="E6E6E6"; alimama_linkcolor="008000"; alimama_bottomcolor="FFFFFF"; alimama_anglesize="0"; alimama_bgpic="0"; alimama_icon="0"; alimama_sizecode="12"; alimama_width=468; alimama_height=60; alimama_type=2;
var alimama_pid="mm_10096109_566393_892989"; var alimama_titlecolor="0000FF"; var alimama_descolor ="000000"; var alimama_bgcolor="FFFFFF"; var alimama_bordercolor="E6E6E6"; var alimama_linkcolor="008000"; var alimama_bottomcolor="FFFFFF"; var alimama_anglesize="0"; var alimama_bgpic="0"; var alimama_icon="0"; var alimama_sizecode="11"; var alimama_width=760; var alimama_height=90; var alimama_type=2; </td> </tr> </tbody> </table> </td> </tr> </tbody> </table>

您可能感兴趣的文章:
ASP.NET MVC 实现基于 XMLHttpRequest long polling 的 Comet
Javascript MVC框架简介
ASP.NET MVC后台向前台传递多个对象、表的方法
asp.net MVC进阶学习---个性化目录结构(二)
每个ASP.NET MVC开发者必须了解的13个扩展点
asp.net 浅谈MVC 架构模式(上)
NET MVC与WebForm的区别
ASP.NET MVC3 永久重定向方法
ASP.NET MVC中使用DropDownList地详解
MVC中处理Json和JS中处理Json对象

[关闭]
~ ~