VS2010 mvc3.0学习入门原理 精华篇

转载 2013年12月02日 13:35:32

ASP.NET MVC 3.0学习系列文章--序

 <a href="/Stu/Del/@stu.Id">删</a>

<a href="/Stu/Modify/@stu.Id">改</a>
1.MVC设计模式
Model 是指 要处理的业务代码和数据操作代码
View 视图 主要是指的 跟用户打交道 并能够展示数据
Controller 看成是 Model和View的桥梁

理解控制器结果

控制器动作返回一种叫做动作结果(Action Result)的东西。动作结果是控制器动作返回给浏览器请求的东西。

ASP.NET MVC框架支持六种标准类型的动作结果:

1. ViewResult – 代表HTML及标记。return View();

2. EmptyResult – 代表无结果。

3. RedirectResult – 代表重定向到一个新的URL。

4. RedirectToRouteResult – 代表重定向到一个新的控制器动作。

 return RedirectToAction("Index");

5. JsonResult – 代表一个JSON(Javascript Object Notation)结果,它可以用于AJAX应用程序。

6. ContentResult – 代表着文本结果。 return Content("Hello World!");

所有这些动作结果都继承自ActionResult基类。

因此,如果你想向浏览器返回一个视图,你可以调用View()方法。如果你想要降用户从一个控制器动作重定向到另一个,你可以调用RedirectToAction()方法。举个例子,代码清单3中的Details()动作要么显示一个视图,要么将用户重定向到Index()动作,取决于Id参数是否含有值。

因为经常会调用Response.Write()方法,Microsoft为你提供了一种调用Response.Write()的简单途径。代码清单3中的视图使用<%=和%>作为调用Response.Write()方法的简单途径。

 <%=Html.Encode(ViewData["message"])%>

<li>@Html.ActionLink("About2", "About", "Home")</li>

优点:
1.1.可以降低 Model(业务/数据) 和 视图(视图) 的耦合关系
1.2.可以复用视图(同样的数据,可以使用不同的视图以 不同的图标展示出来!)

2.DotNetMVC 框架:约定大于配置

2.1控制器类命名 以 Contoller结尾:HomeController
2.2控制器类将会产生一个 与之同名的 在Views文件夹下的 文件夹:~/View/Home
2.3控制器里的 Action方法,也可在视图文件夹下生成一个同名的视图,如:Index.cshtml

3.EF(EntityFrameWork)
ORM(对象关系映射框架/ 数据持久化框架)
根据 实体对象 操作  数据表中数据的一种面向对象的操作框架。
底层也是调用 Ado.Net
 3-1 在model下添加数据ADO方法  右键数据

在Model.edx 视图 下右键添加code


Model1.Context.tt    public partial class dnt2Entities1 : DbContext

/1.1第一种方式:使用 SQO(标准查询运算符),查询 所有未软删除的文章


1.2第二种方式:使用 Linq 语句,查询 所有为软删除的 文章

  public ActionResult Index()
        {
            //1.查询 数据库里的 文章数据(通过 EF 执行)
            //1.1第一种方式:使用 SQO(标准查询运算符),查询 所有未软删除的文章
            //实际返回的 是一个 IQueryable 对象?此处其实是返回了一个 IQueryable接口的子类对象
            //IQueryable<Models.BlogArticle> query = db.BlogArticles.Where(d => d.AIsDel == false);
            //此时真实 返回的 类型为 DbQuery<T>,支持 延迟加载:只有当使用到数据的时候,才去 查询数据库!
            //DbQuery<Models.BlogArticle> query = (db.BlogArticles.Where(d => d.AIsDel == false)) as DbQuery<Models.BlogArticle>;
            //直接将 返回的 DBQuery转成  List<T>集合,也就是立即查询数据库,并返回查询到的集合
            //List<Models.BlogArticle> list = db.BlogArticles.Where(d => d.AIsDel == false).ToList();


            //1.2第二种方式:使用 Linq 语句,查询 所有为软删除的 文章
            // *Linq 仅仅是 给成员用的 语法糖,.Net编译器会在编译程序集(中间代码)的时候,将Linq语句 转成 SQO(标准查询运算符)
            List<Models.BlogArticle> list = (from d in db.BlogArticles where d.AIsDel == false select d).ToList();
            //2.将集合数据传给视图
            //ViewBag.DataList = list;
            ViewData["DataList"] = list;
            //3.“加载”视图
            return View();    return View(list;); 前台@Model
        }

    <!--视图包含一个 Model属性,可以通过控制器Action方法里的 View(modeldata)赋值  -->
    @foreach (BlogArticle stu in Model as List<Models.BlogArticle>)
    {
        string str = "123";
        <tr>
            <td>@stu.Id</td>
            <td>@stu.Name</td>
            <td>@stu.Class.CName</td>
            <td>@stu.Gender</td>
            <td>
                <a href="/Stu/Del/@stu.Id">删</a>
                <a href="/Stu/Modify/@stu.Id">改</a>
            </td>
        </tr>
    }
    </table>

Index.cshtml 

视图中可以引用命名空间 @和前台遍历写HTML。

@using MVCBlog.Models
@{
    Layout = null;
}

  <!--遍历 Action方法 设置给 ViewData 的集合数据,生成HTML代码-->
    @foreach (BlogArticle a in ViewData["DataList"] as List<BlogArticle>)
    { 
        <tr>
            <td>@a.AId</td>
            <td>@a.ATitle</td>
            <td>@a.BlogArticleCate.Name</td>
            <td>@a.Enumeration.e_cname</td>
            <td>@a.AAddtime</td>
            <td>
                <a href="javascript:del(@a.AId)">删</a>
                <a href="/home/modify/@a.AId">改</a>
            </td>
        </tr>
    }

!--
        相当于把  Action 方法中 保存的内容,放在此处 输出!
        默认Razor视图会讲从后台输出的字符串里包含的 < 转义成 &lt;
        为了不转义,使用Raw方法,来输出 html 标签源码!
        -->
    @Html.Raw(ViewBag.HtmlStr)

ViewBag,ViewData,TempData区别?

ViewBag 和 ViewData 数据"共享",作用域为 当前 Action。

TempData 作用域跨 Action。

理解HTML Helpers

HTML Helper只不过是一个返回字符串的方法。这个字符串可以代表你想要的任何类型。举个例子,你可以使用HTML Helper来呈现标准的HTML标签,类似HTML <input>和<img>标签。你也可以使用HTML Helpers来呈现更加复杂的内容,例如一个标签页或者一个数据库数据的HTML表格。

ASP.NET MVC框架包含了下面的标准HTML Helpers集合(这里没有列全):

· Html.ActionLink()

· Html.BeginForm()

· Html.CheckBox()

· Html.DropDownList()

· Html.EndForm()

· Html.Hidden()

· Html.ListBox()

· Html.Password()

· Html.RadioButton()

· Html.TextArea()

· Html.TextBox()


java从入门到精通学习笔记(一)——基础篇

1.Java虚拟机、Java编译器和Java解释器 JVM:JVM有自己完善的硬件架构,如处理器、堆栈(Stack)、寄存器等,还具有相应的指令系统(字节码就是一种指令格式)。 JVM屏蔽了与具体操作...
  • qq_33004293
  • qq_33004293
  • 2017年10月26日 09:11
  • 154

C++学习1:C++入门基础学习

说自己会C++简直丢人。大二学了C++,之后数据结构等于又学了一遍,现在真正接触代码了,什么都不会,因此还是得从头自学一下。手头得到一本C++ primer plus,就尽力抽时间把他学一遍吧,不求真...
  • lin453701006
  • lin453701006
  • 2016年10月27日 17:39
  • 574

万字总结:学习MySQL优化原理,这一篇就够了!

2017-09-28 CHEN川 DBAplus社群 DBAplus社群 DBAplus社群 微信号 dbaplus 功能介绍 围绕数据库、大数据、PaaS云,顶级大咖、技术干货,运营几个...
  • u011277123
  • u011277123
  • 2017年10月26日 21:34
  • 81

无锁队列的原理与实现

最近几天在思考无锁队列,看了相关文章,也读了一些博客,最后写了一份代码,代码实现对在多线程环境下对队列的读和写是不需要加锁的。代码如下所示: #include #pragma commen...
  • wind_2008_06_29
  • wind_2008_06_29
  • 2014年10月10日 17:10
  • 2360

React-Native从入门到放弃(一)准备篇

facebook官方教程(英文) react-native源码 中文视频(目前中文只更新到0.28) 前言 虽然大维哥从事编程的时间不是很长,但是一直认为未来计算机语言的发展必将是跨平台,...
  • ruglcc
  • ruglcc
  • 2016年12月20日 05:25
  • 807

深度学习word2vec笔记之基础篇

深度学习word2vec笔记之基础篇
  • mytestmy
  • mytestmy
  • 2014年05月25日 16:00
  • 66196

springmvc学习笔记(1)-框架原理和入门配置

本文主要介绍springmvc的框架原理,并通过一个入门程序展示环境搭建,配置以及部署调试。...
  • h3243212
  • h3243212
  • 2016年03月08日 16:20
  • 8055

【基础篇】工作流技术JBPM4.4开发入门(二)

继续上篇博客的介绍   举例说明JBPM帮我们做的工作:   其一:流程的调用工作,实现自动化且灵活化   说明:每完成一个任务后,将会自动执行下一个流程               对应的xm...
  • hejingyuan6
  • hejingyuan6
  • 2014年11月24日 22:22
  • 2728

我的2014个人总结——学习篇、工作篇、生活篇

2013的个人总结在我印象当中是写过的,2014已成为过去,当我想回过头来看看我2013年的总结时,奈何我已不知它的踪迹了,所以决定以后的个人总结还是以博客的形式记录吧!平静下来,该是好好总结这一年各...
  • qq710262350
  • qq710262350
  • 2015年01月18日 10:09
  • 1489

Shell基础(一):入门基础

1、Shell是什么? Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的系统级程序。 Shell还是一个功能强大的编程语言,易编写,易调试,灵活性强。Shell是...
  • lyc_stronger
  • lyc_stronger
  • 2016年03月08日 08:55
  • 343
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VS2010 mvc3.0学习入门原理 精华篇
举报原因:
原因补充:

(最多只允许输入30个字)