NClay.MVC是MVP?
通过一个简单的登陆需求来看一下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.MVC可以灵活地运用在web或win应用开发中。