快速业务通道

使用PureMVC实现ASP.NET的MVC结构开发

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
法的内容:

Code
/// <summary>
  /// 注册页面要使用到的类
  /// </summary>
  /// <param name="notification"></param>
  public override void execute(INotification notification)
  {
    Page page = notification.getBody() as Page;
    facade.registerCommand(LOGIN, typeof(LoginCommand));
    facade.registerMediator(new LoginMediator(page));
  }

在这里可以统一地注册页面需要使用到的MVC。现在再来看一下LoginMediator类的构造函数

Code
  new public static readonly string NAME = "LoginMediator";
  /// <summary>
  /// 为页面控件添加事件,这里只添加登录事件
  /// </summary>
  /// <param name="page"></param>
  public LoginMediator(Page page)
    : base(NAME, page)
  {
    Button loginButton = (Button)page.FindControl("LoginButton");
    loginButton.Click += new EventHandler(Login);
  }

Mediator是用来管理V(View)层的,可以在Mediator里面添加事件或改变视图的表现等操作。我这里是先为登录按钮注册一个登录事件。

Code
  /// <summary>
  /// 登录按钮的单击事件
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  public void Login(object sender, EventArgs e)
  {
    TextBox userNameTextBox = (TextBox)MyPage.FindControl("UserNameTextBox");
    string userName = userNameTextBox.Text;
    TextBox passwordTextBox = (TextBox)MyPage.FindControl("PasswordTextBox");
    string password = passwordTextBox.Text;
    LoginVO loginVO = new LoginVO(userName, password);
    sendNotification(DefaultPageCommand.LOGIN, loginVO);
  }

Login方法通过传的Page获取用户登录的用户名和密码,然后发出通知DefaultPageCommand.LOGIN,并且传入登录的信息loginVO,执行相应的Command类。Mediator还有一些其它的重要的方法

Code
  /// <summary>
  /// 列出该Mediator要接收的通知
  /// </summary>
  /// <returns></returns>
  public override IList<string> listNotificationInterests()
  {
    List<string> list = new List<string>();
    list.Add(LoginCommand.LOGIN_SUCCESS);
    list.Add(LoginCommand.LOGIN_FAILED);
    list.Add(LoginCommand.USER_NOT_FOUND);
    return list;
  }

Mediator也是可以接收通知的,listNotificationInterests方法用来告诉View它所以接收的通知,这样,有方法发出对应的通知后,它就会调用handleNotification来处理

Code
  /// <summary>
  /// 对接收到的通知分别进行处理
  /// </summary>
  /// <param name="notification"></param>
  public override void handleNotification(INotification notification)
  {
    switch (notification.getName())
    {
      case "LoginSuccess":
        MyPage.Session["User"] = notification.getBody();
        MyPage.Response.Redirect("Welcome.aspx");
        break;
      case "LoginFailed":
        Mes

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号