【C#MVC】搭建.netMVC4工程(三)
【C#MVC】搭建.netMVC4工程(三)
上面我们介绍到mvc的框架项目搭建,并且完成了数据实体的映射。
上一篇遗留的问题:
经过测试,上一篇中Common类库,在删掉默认的cs页面后,竟然不能被其他类库(如:service,manager)引用,在使用using时根本不能引用,而在引用中我已经添加了common的dll文件。这一点令我很不解,而其他类库在删除默认的cs页面后,可以被正常使用。这里如果有跟我一样的朋友,不要将默认页面删掉,就可以正常使用了。有了解的大神么?请在评论区解释一下。
这一篇我们将会将整个项目调试通,在页面显示一些信息。不做过多的处理。写这个目的也仅仅是为了初学者能够对mvc4有个了解。在以后有时间会更新一个菜单权限管理的项目例子,因为setting这一块在任何中大型项目中均会用到,因此对着了解也是有必要的。
废话一大篇开始正式内容,上一篇的model视图应该是这样的:
这里EF帮助生成了一个名为App.Config的文件,这里面有我们使用的connectionString:
这里我们使用第二个,将其复制到Web下面的Web.Config文件中:
要放在configuration标签下:
这里面的参数不在过多描述,初学者可以找一下相关的博客。
至此,配置一个基础mvc项目的所有配置都已经完成。一直看下来的你相信对mvc的架构已经大致了解了。若过以前学过java的mvc开发或者SSM,SSH架构的对此更是了然于胸。不错,这个与Java的mvc模式有很大程度上的相似。
下面写一个Demo,仅供学习参考,在最后我会将源代码开放出来,但是我不敢确定会不会因为vs和sqlserver的版本不一致而引发问题。
显示Demo: service层使用Linq与数据库进行数据交换,至于linq与sql语句之间的优缺点不在赘述,我的其他博客有介绍,亦可以到网上搜寻相关信息。
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Arise.Model; //手动添加
using Arise.Common;//手动添加
namespace Arise.Service
{
public class Login_Service
{
public User_Master GetUserMaster()
{
using (AriseEntities ariseEntities = new AriseEntities())
{
return ariseEntities.User_Master.FirstOrDefault();
}
}
}
}
里面就一句简单的代码,使用实体获取第一行的User_Master对象。
Manager层:(进行业务上处理,这里没什么作用)
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Arise.Common;
using Arise.Model;
using Arise.Service;
namespace Arise.Manager
{
public class Login_Manager
{
private Login_Service loginService = new Login_Service();
public User_Master GetUserMaster()
{
return loginService.GetUserMaster();
}
}
}
Controller:(负责数据的接受和视图的转发)
创建过程: 这里命名必须是以Controller为结尾。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Arise.Common;
using Arise.Model;
using Arise.Manager;
namespace Arise.Web.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
Login_Manager loginManager = new Login_Manager();
User_Master userMaster = loginManager.GetUserMaster();
ViewBag.name = userMaster.User_Name;
return View();
}
}
}
这里我要介绍一下controller一些相关的东西。
当方法的返回值为ActionResult ,表示返回一个视图,视图名为方法名。
ViewBag,可以将数据带到View中,显示。类似于java中的request域中的parameter参数。
View层:(视图层)这里只是一个演示页面。
View中创建一个名字与Controller名相同的文件夹, 这里视图的命名也是有规则的,需与返回视图的方法的方法名相同。这里就是Index了。
@{<!-- -->
ViewBag.Title = "Index";
}
<h2>@ViewBag.Name</h2>
这里只是为了测通系统,没有做页面的处理。
@ViewBag:取出放在ViewBag中的内容。
最终成功页面:
好了,这里成功的讲数据库中的Name列取出来,并显示。这样表示我们系统处于通过状态。
一个简单的入门Demo完了,希望能够对初学者有所帮助。接下来我会使用这个框架持续更新一个menu的授权项目,希望多关注。