当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  谈到Model View Presenter模式之后的随笔[讨论版]

 谈到Model View Presenter模式之后的随笔[讨论版]

点击次数:17 次 发布日期:2008-11-26 09:55:16 作者:源代码网
源代码网推荐     
源代码网推荐   ModelViewPresenter 模式已经推出快二年了吧,今天公司新的兄弟,午饭时和我谈到有关于在项目中是否可以使用MVP模式,然后呼啦啦和我讲了许多,我听了蛮有感处的,但结果让这位兄弟写的时候,他却写了大半个下午,还没个MVP影子,Jezz! 我只好花上10几个分钟的时间写了一个Demo。
源代码网推荐   本来想不发到Blogs中,但是还是和大家分享一下,
源代码网推荐   第一,让初学者有关的例子可以参照,毕竟读代码,要比看书有感觉,
源代码网推荐   第二,也可以让高手们指点指点,有哪些不足,然后看看高手们能不能就有关于MVP模式,在项目中的应用谈谈他们的看法。
源代码网推荐   第三,有关于MVP模式的文章cnblogs中好像很少,因为我只看到过两篇,一篇是介绍MVP模式的,一篇是翻译的吧。
源代码网推荐   *嗯,不管大家对以下的代码部分有什么疑义,都可以进行评论,希望可以达到共同学习,互相学习的目的,评出你的观点,说出你的理解。
源代码网推荐   (希望不要说粗口,这样就不好了。)
源代码网推荐  以下是代码部分:
源代码网推荐  
源代码网推荐  ModelLayer:
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐  namespace MVPDesign.ModelLayer
源代码网推荐  {
源代码网推荐   public class XmlData
源代码网推荐   {
源代码网推荐   /**//// <summary>
源代码网推荐   /// 根据Id取得Xml中的数据
源代码网推荐   /// </summary>
源代码网推荐   /// <typeparam name="T">返回的Type</typeparam>
源代码网推荐   /// <typeparam name="V">Id的Type</typeparam>
源代码网推荐   /// <param name="id"></param>
源代码网推荐   /// <returns>XmlData</returns>
源代码网推荐   public static T GetDataById<T, V>(V id) where T : XmlData
源代码网推荐   {
源代码网推荐   XmlDocument xmldocument = new XmlDocument();
源代码网推荐  
源代码网推荐   xmldocument.Load("XmlData.xml");
源代码网推荐   String path = "/XmlData/Data[@id={0}]/{1}";
源代码网推荐   XmlNode titleNode = xmldocument.SelectSingleNode(String.Format(path, id, "Title"));
源代码网推荐   XmlNode textNode = xmldocument.SelectSingleNode(String.Format(path, id, "Text"));
源代码网推荐  
源代码网推荐   XmlData xmlData = new XmlData();
源代码网推荐   xmlData.title = titleNode.InnerText;
源代码网推荐   xmlData.text = textNode.InnerText;
源代码网推荐   return xmlData as T;
源代码网推荐   }
源代码网推荐  
源代码网推荐   internal String title;
源代码网推荐   /**//// <summary>
源代码网推荐   /// 相对应于XML文件中的Title
源代码网推荐   /// </summary>
源代码网推荐   public String Title
源代码网推荐   {
源代码网推荐   get { return title; }
源代码网推荐   }
源代码网推荐  
源代码网推荐   internal String text;
源代码网推荐   /**//// <summary>
源代码网推荐   /// 相对应于XML文件中的Text
源代码网推荐   /// </summary>
源代码网推荐   public String Text
源代码网推荐   {
源代码网推荐   get { return text; }
源代码网推荐   }
源代码网推荐   }
源代码网推荐  }
源代码网推荐  
源代码网推荐  ViewLayer:
源代码网推荐  namespace MVPDesign.ViewLayer
源代码网推荐  {
源代码网推荐   public interface IDataView
源代码网推荐   {
源代码网推荐   Int32 DataId { get; }
源代码网推荐   String Title { set; }
源代码网推荐   String Text { set; }
源代码网推荐   }
源代码网推荐  
源代码网推荐   public class DataPresenter
源代码网推荐   {
源代码网推荐   internal readonly IDataView view;
源代码网推荐  
源代码网推荐   public DataPresenter(IDataView view) { this.view = view; }
源代码网推荐  
源代码网推荐   public void RetrieveData()
源代码网推荐   {
源代码网推荐   XmlData myPost = XmlData.GetDataById<XmlData,Int32>(view.DataId);
源代码网推荐   view.Title = myPost.Title;
源代码网推荐   view.Text = myPost.Text;
源代码网推荐   }
源代码网推荐   }
源代码网推荐  }
源代码网推荐  PresenterLayer:
源代码网推荐  using MVPDesign.ViewLayer;
源代码网推荐  namespace Presenter
源代码网推荐  {
源代码网推荐   public partial class PresenterLayer : Page, IDataView
源代码网推荐   {
源代码网推荐   private DataPresenter dataPresenter;
源代码网推荐  
源代码网推荐   protected void Page_Load(object sender, EventArgs e)
源代码网推荐   {
源代码网推荐   dataPresenter = new DataPresenter(this);
源代码网推荐   }
源代码网推荐  
源代码网推荐   protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
源代码网推荐   {
源代码网推荐   dataPresenter.RetrieveData();
源代码网推荐   }
源代码网推荐  
源代码网推荐   Int32 IDataView.DataId
源代码网推荐   {
源代码网推荐   get { return Convert.ToInt32(this.DDL.SelectedValue); }
源代码网推荐   }
源代码网推荐  
源代码网推荐   String IDataView.Title
源代码网推荐   {
源代码网推荐   set { this.lblTitle.Text = value; }
源代码网推荐   }
源代码网推荐  
源代码网推荐   String IDataView.Text
源代码网推荐   {
源代码网推荐   set { this.lblText.Text = value; }
源代码网推荐   }
源代码网推荐   }
源代码网推荐  }
源代码网推荐  
源代码网推荐  XMLFile:
源代码网推荐  <?xml version="1.0" encoding="utf-8" ?>
源代码网推荐  <XmlData>
源代码网推荐   <Data id="1">
源代码网推荐   <Title>Linq</Title>
源代码网推荐   <Text>Linq To Memery Object</Text>
源代码网推荐   </Data>
源代码网推荐   <Data id="2">
源代码网推荐   <Title>BLinq</Title>
源代码网推荐   <Text>Linq To Web</Text>
源代码网推荐   </Data>
源代码网推荐   <Data id="3">
源代码网推荐   <Title>XLinq</Title>
源代码网推荐   <Text>Linq To Xml</Text>
源代码网推荐   </Data>
源代码网推荐   <Data id="4">
源代码网推荐   <Title>DLinq</Title>
源代码网推荐   <Text>Linq To DataBase</Text>
源代码网推荐   </Data>
源代码网推荐   <Data id="5">
源代码网推荐   <Title>SLinq</Title>
源代码网推荐   <Text>Linq To Stream</Text>
源代码网推荐   </Data>
源代码网推荐  </XmlData>
源代码网推荐  PresenterForm:
源代码网推荐  <form id="form1" runat="server">
源代码网推荐   <table style="width: 659px; height: 481px">
源代码网推荐   <tr>
源代码网推荐   <td style="width: 178px">
源代码网推荐   <asp:Label ID="lblChoose" runat="server" Text="Please Choose ,Feeling MVP" Width="195px"></asp:Label><br />
源代码网推荐   <asp:DropDownList ID="DDL" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="True">
源代码网推荐   <asp:ListItem Text="Please Choose Option" Value="0"></asp:ListItem>
源代码网推荐   <asp:ListItem Text="Linq" Value="1"></asp:ListItem>
源代码网推荐   <asp:ListItem Text="BLinq" Value="2"></asp:ListItem>
源代码网推荐   <asp:ListItem Text="XLinq" Value="3"></asp:ListItem>
源代码网推荐   <asp:ListItem Text="DLinq" Value="4"></asp:ListItem>
源代码网推荐   <asp:ListItem Text="SLinq" Value="5"></asp:ListItem>
源代码网推荐   </asp:DropDownList>
源代码网推荐   </td>
源代码网推荐   <td>
源代码网推荐   <asp:Label ID="lblDisplayTitle" runat="server" Text="DisplayTitleFromXml"></asp:Label><br />
源代码网推荐   <asp:Label ID="lblTitle" runat="server" Font-Size="Larger" ForeColor="Red"></asp:Label>
源代码网推荐   </td>
源代码网推荐   <td>
源代码网推荐   <asp:Label ID="lblDisplayText" runat="server" Text="DisplayTextFromXml"></asp:Label><br />
源代码网推荐   <asp:Label ID="lblText" runat="server" Font-Size="Larger" ForeColor="Blue"></asp:Label>
源代码网推荐   </td>
源代码网推荐   </tr>
源代码网推荐   </table>
源代码网推荐   </form>
源代码网推荐  程序最终运行截图:
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华