一、首先新建项目:
选择web项目---》选择asp.net mvc 3应用程序
二、选择项目模板:
空 表示只有一个mvc框架的目录结构的应用程序,
Internet应用程序 是一个带有使用窗体身份验证的帐户控制器的默认 ASP.NET MVC 3 项目。(也就是事例项目,初学着建议选择此项,因为里面包含了许多微软的标准及很规范的例子)
三、选择视图引擎
默认为Razor (有些网站翻译为剃刀)也建议使用此引擎,它跟aspx引擎最大的区别是@代替了<%%> 更为简洁,它能最大限度地减少在一个文件中所需的字符和按键的数量,使快速,流畅的编码工作流程,不像大多数模板语法,你不需要打断你的编码,明确表示在你的HTML服务器块。解析器是足够聪明的推断,从你的代码。这使得这是一个非常紧凑和表达语法干净,速度快,输入的乐趣。
Aspx引擎,没什么好说的,大家对它并不陌生。
四、选择是否创建单元测试项目
五、框架目录结构:
目录中controllers为控制层处理各种请求、页面跳转、错误处理等业务。最好不要修改该文件夹名称。
View为视图目录,
shared为共享目录,也就是当controller对应的view目录中找不的对应的视图,将在shared中查找。Shared一般存放母板视图,公用部分页视图(也就相当aspx中的用户控件)
Home文件夹一般是存放网站首页controller目录,(当然也可以存放在其他位置,但不建议)
View目录下的子目录通常是不用手动去添加的。当我们建立controller里的action的时候会自动为我们添加(下面会提到);
除这两个之外其他的目录都可以根据业务来添加或者修改,值得一提的是,通常我们写一些页面级的逻辑可以写在models目录下面,相当于app_code目录。为了方便调用,我们会通常去掉生成的命名空间。如:
我们会去掉 namespace mvcdemo.Models
Content 目录我们通常会修改为Css,Scripts会修改为js
Global.asax 文件比较重要,通常我们的路由是保存在这个文件里面。
这是一条默认的路由,正如上面所说的,如果我们的默认主页不是home/index那么我们就需要在这里修改。
在实际应用中我们可以根据我们的业务要求来修改里面的内容。(灵活掌握和运用会得到非常神奇的效果。)
特别注意的是,自定义路由,必须是在默认路由之前。
六、母版页
我们缩减一下标签
按照约定:ViewBag.Title是文件的标题
@RenderSection("Header",false)、@RenderSection("Footer",false) 这是为了美化我们的代码而写的头和交嵌入脚本域(在后面会讲到)
@RenderBody() 子页内容
当然我们可以在这里添加一些用户的登录信息、页首、页脚之类的公用内容
七、部分页
我们打开可以看到只有内容,没有其他的标签,
部分页的页面引用:@Html.Partial("_LogOnPartial")
Action 响应部分页:
更为神奇的是我们的部分页可以很方便第使用页面缓存,而不影响全局页面。
八、新建controller
在controllers目录右键—》添加—》控制器
我们可以看到,微软会给我们自动添加Controller后缀,选中部分是我们的控制器名称。
可以根据我们的业务来命名,要求是有意义的英文单词,首字母大写。
我们输入Admin确定后会添加一个cs文件AdminController
默认添加一个Index的 Action方法 我们添加视图是在方法的右键点击添加视图
红线部分默认即可
创建强类型视图(可选)
创建部分视图选项 ---也就是部分页视图。不带母板,不带html头尾标签。一般为用户控件。嵌入特定的页面区域中。
使用布局或母版页----也就是创建一个引用母版的部分页
红线内容不选为默认模版,也就是views-shared _Layout.cshtml
如果有多个母版页,而又不是默认母版,那当然需要选择啦。
确定后:
会生成以下代码:
@model mvcdemo.Models.LogOnModel为选择了《创建强类型视图》的结果
通常会在添加,编辑,或者单个model内容显示使用。
用法:
@Model.UserName 输入LogOnModel里面的UserName属性
代码块:ViewBag.Title为页的标题名称(默认的,可以修改,)
我们最终在源代码中可以看到:
也就是头部归头部,脚部归脚部,不会过于凌乱。
九、错误页
十、model与表单
这是属性配置模式的model是配合ui验证而使用的。功能很强大,但也有局限性。
一般我不用这个。有兴趣的好可以去微软官网学习。
我们在处理表达提交问题的时候,
可以采用传统的
string name= Request["name"];
可以采用Model作为参数
但这样的前提是:
表达标签的 name必须是model的属性名称
这样我们可以省去了许多代码。
十一、注意事项
1、在页面中model是关键字,不可以定义model为变量名。
2、Razor引擎默认是转码格式输出,
而他的输出内容是:
源码:
页面:
3、如果我们需要展示原来的内容,Html.Raw() 输入方法
页面源码:
页面显示:
十二、结束
到此,net mvc 的基本内容已经完成,需要更深入的了解,如权限控制,扩展路由,路由过滤,等等,请到博客园,或者谷歌去找答案吧。