NClay.MVC是MVP?

         一直对概念上的东西都很模糊,甚至于自己做的东西应该规为那种模式一直摸不着头脑。NClay.MVC是在使用MonoRail后基于兴趣编写的MVC组件,在WebForm的基础上进行Front Controller的方式改造。在编写完成后发现和原有Front Controller有本质上的区别,传统方式是page<->action;NClay中变成了page<->view(信息输出/输入描述对象)<->interface(输出/输入逻辑接口)<->logicaction(逻辑处理方法)。


通过一个简单的登陆需求来看一下
NClay.MVC处理的结构。

Page:

    <table style="width: 314px" >

        <tr>

            <td class="style2">

                用户名</td>

            <td class="style1">

                <input id="Text1" class="custominput" name="UserName" style="width: 207px"

                    type="text"

                    validator="nonnull:true;type:string;tip:输入登陆用户名!;tipcontrol:nametip"  /></td>

            <td class="style3">

                <div id="nametip"></div></td>

        </tr>

        <tr>

            <td class="style2">

                密码</td>

            <td class="style1">

                <input id="Text2" class="custominput" name="UserPWD" style="width: 207px"

                    type="password"

                    validator="nonnull:true;type:string;tip:输入登陆密码!;tipcontrol:pwdtip"  /></td>

            <td class="style3">

                <div id="pwdtip"></div></td>

        </tr>

        <tr>

            <td align="center" colspan="3">

                <br />

                <input id="Submit1" class="custombutton" type="submit" value="登陆" />

              

        </tr>

    </table>

View:

    [NClay.MVC.Action("~/login.aspx", NClay.MVC.ActionType.POST, typeof(Blog.Logics.Users.ILogin))]

    public class Login:BaseCode.BaseView,Blog.Logics.Users.ILogin

    {

        #region ILogin 成员

 

        public Blog.Entities.SysUser User

        { get; set; }

 

        public string UserName

        { get; set; }

 

        public string UserPWD

        { get; set; }

 

        #endregion

    }

Interface:

    public interface ILogin

    {

        Entities.SysUser User

        {

            get;

            set;

        }

        string UserName

        {

            get;

            set;

        }

        string UserPWD

        {

            get;

            set;

        }

 

    }

Logic:

        public void Login(ILogin logic)

        {

           

            if (!Common.IsEmpty(logic.UserName) && !Common.IsEmpty(logic.UserPWD))

            {

                logic.User = (DB.SysUser.UserName == logic.UserName

                    & DB.SysUser.UserPWD == Common.MD5Crypto(logic.UserPWD.ToLower())).ListFirst<SysUser>();

            }

            if (logic.User == null)

                throw new LogicException("登陆错误,请输入正确的用户名和密码!");

        }

Page请求到View的成员数据绑定和逻辑的执行处理都是NClay框架一手包办的,开发人员不需要编写任何一句调用代码。

如果应用代码了解NClay可点

虽然自己写这样一个东西有点闭门造车的感觉, 不过直得高兴的是经常努力后NClay.MVC可以灵活地运用在webwin应用开发中。

posted on 2007-09-28 09:32  henry  阅读(2085)  评论(13编辑  收藏  举报

导航