标签:ndt 缓存 表单提交 文件夹 数据 但我 提高 [] 视图
MVC概述
控制器和视图
第一个MVC(其实自己之前写过几次了)
/Controllers/UserController.cs
public class UserController : Controller//控制器 { public ActionResult Users()//行为 { return View("User");//视图 } }
/Views/User/Users.cshtml(右键代码的View()方法 - 添加视图,会自动生成)
@{ ViewBag.Title = "Users"; } <h2>用户信息管理界面</h2>
传参的方法
Razor语法
/Controllers/UserController.cs
public class UserController : Controller//控制器 { public ActionResult Users()//行为 { var name = "老K"; ViewData["name1"] = "ViewData名字:"+name;//旧的ViewData传参 ViewBag.name = "ViewBag名字:"+name;//新的ViewBag,可以随意带属性,不过性能速度比ViewData慢。 return View("Users",(object)name);//视图 } }
/Views/User/Users.cshtml
@{ ViewBag.Title = "Users"; string name = (ViewData["name1"] != null) ? (string)ViewData["name1"] : ""; string viewname = (string)Model; string bagname = ViewBag.name; } <h2>用户信息管理界面</h2> <p>@name</p> <p>@viewname</p> <p>@bagname</p>
使用EF
步骤1:首先建好数据库表、字段。(这是传统点的方法,EF是可以帮你创建的。)
步骤2:创建一个文件夹或新的项目,添加新项 - 数据 - ADO.NET实体数据模型,然后有向导配置数据库,拉数据表进去。我的做法:建个edmx文件夹,建立NewsEF.edmx(里面很多配置文件),还有类名也要改成NewsEF。(默认还是是Entities)
步骤3:然后访问就直接MVC_Web.edmx.NewsEF来调用增、删、改方法,还可以用里面的实体类。(方便吧)
-大致原理-
模型:代表业务和逻辑层,封装了实体的属性和方法。
视图:负责将模型传递给表示层,具体用HTML、XML等。遵循原则,表示层最好不要用逻辑和业务。
控制器:控制程序的逻辑,是视图和模型协调的工具,从视图接收信息,然后再传到模型,模型再返回给视图。
惯例优先原则:.NET帮你生成好3个文件夹。注意一下,在Controller里,cs文件命名都必须Centroller结尾,在Views有Shared(保存共享视图)和其他文件,有点琐碎,但也提高效率
在App_Start里RouteConfig.cs是配置路由,目前理解是定义域名的规则,默认路径是 控制器名/行为/id。
控制器
(在Conteller里带ActionResult的方法),MVC4意思是下一步做什么,而不是怎么做
返回可以有很多类型:
View() 返回视图渲染的ViewResult
Content() 返回文本的ContentResult
File() 返回文件
还有Javascript()、Json()、HttpNotFound()、PartialView()...
控制器的参数(MVC强大功能之一:模型绑定,可以使用请求消息过来的参数)
传统是URL传参、Session、视图等,但这个只要有失败的解析就运行不下去,或者通过TryParse()来维护。
模型绑定其实也是与Request一一相应,不过省略了显示代码、方便使用:
public ActionResult Create(string title,decimal currentPrice,DateTime startTime,DateTime endTime)//这里是模型绑定,或者换成Auction实体类
{
var auction = new Auction(
Title = title,
CurrentPrice = currentPrice,
StartTime = startTime,
EndTime = endTime
);
}
还有通过return View()返回参数,如var id = "";return View("auction",id);
Razor语法(在html以@将服务器代码写进去的语法)
分为:代码段和代码块
代码段:如@DateTime.Now 或者有@Html.ActionLink("Login")
代码块:@{
代码内容
}
变量生命周期应该是页面级的,使用起来确实挺方便。
常用的特性:
[HttpGet] [HttpPost] 只处理Get / 只处理Post传递方式
[AllowAnonymous][Authorize]调用不用权限验证 / 限制调用
[Bind(...)]form表单提交时筛选参数用的
[Remote("","")]放在实体类,可以调用方法去检查
[HandleError(...)]异常处理,()里可以具体到哪些异常,与web.config的设置配合使用
传输数据:ViewData[]和ViewBag.xxx
安全、日志、缓存
参考:
http://www.cnblogs.com/powertoolsteam/p/MVC_one.html
《asp.net mvc4 web编程》
标签:ndt 缓存 表单提交 文件夹 数据 但我 提高 [] 视图
原文地址:http://www.cnblogs.com/laokchen/p/5757836.html