1.ASP.NET两种开发模式的简单比较(WebForm和MVC)
(1)WebForm开发模式
当用户输入网址https://i.cnblogs.com/EditPosts.aspx?opt=1进行请求服务器的时候,服务器首先会判断是否存在这个页面,然后就会找到相应的页面,处理相应的代码,也就是
执行(.cs文件),然后通过这个文件程序访问数据库,将用户需要的内容读取出来,然后返回到用户访问的页面。
所以WebForm 的开发模式就是通过URL访问服务器上对应的(ASPX)文件,并将codeBehind代码的处理结果返回给用户的过程。
(2)MVC开发模式
当用户输入网址https://i.cnblogs.com/home/Index,这个网址并不是映射相应的文件处理程序,而是将其交个Controller对请求的逻辑进行处理,找到Controller下的相应的行为,然后返回对应View给客户端。
对于WebForm开发模式,微软提供了大量的服务端控件,可以快速上上手,开发效率快,但是由于封装的比较厉害,很多底层的原理不是很明了,对于UI层来说aspx和aspx.cs这两个文件一个是页面展示,一个后台逻辑,他们是父子关系,所以具有较强的耦合性
MVC:M:model V:View C:controller,通常认为MVC只是UI层的逻辑分块,此时的Model也就是VIewModel,但是通常在架构的使用的时候,将这个Model同时也用在其他例如DAL和BLL层,MVC将控制器逻辑和页面的展示View进行了解耦,降低 耦合性
2.MVC的简单的使用
前台:(Register对应的View)
<form method="Post" action="home/AddUser">
用户名:<input type ="text" name=“userName”>
密码:<input type="password" name ="pwd">
<input type="submit" value="添加">
</form>
后台HomeController
public ActionResult Register
{
reutrn View();
}
public ActionResult AddUser()
{
string name =Request["userName"];
......
int result= dbContext.SaveChanged();
if(result>0)
{
return Content("t添加成功");
}
else
{
return Content("添加失败");
}
}
对于控制器中的行为获取表单中的数值,MVC提供了很多遍历的方式,就是可以将AddUser改造为
public ActionResult AddUser(string userName,string pwd)
{
此时userName和pwd变量就可以直接使用,MVC会进行处理,也就是将form表单的数据与参数变量对应
需要注意:参数变量的名称一定要和表单中的名称一致
}
public ActionResult AddUser(User user)
{
此时user会和MVC中的Model进行对应,所以要求表单中数据的命名一定要和Model中定义的变量名称是一致的。
}
从上面的两种方式可以大大简化了开发人员的操作,同时可以发现在MVC中存在着许许多多的约束,这些约束标准,代替了频繁的配置,只有按照约束,MVC才可以更加的得心应手的使用,方便开发人员开发。
3.ActionResult
这是一个父类型,它的常用的子类型有:ViewResult(return View())、ContentResult( return Content("ss"))、RedirectResult(return Redirect("url")或者return RedirectToAction(控制器,行为))等
备注1:本文参考了博客http://www.cnblogs.com/edisonchou/p/3911558.html
备注2:本人只是刚开始学MVC,欢迎批评指正