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()


相关文章推荐

VS2010 mvc3.0学习入门-2

5.1 从控制器访问模型中的数据 鼠标右击Controllers文件夹,点击“添加”菜单下的“控制器”菜单项,将会弹出一个“添加控制器”对话框,在该对话框中将控制其命名为MoviesControlle...

MVC3.0在VS2010平台使用+中文补丁

  • 2013年07月29日 17:02
  • 23.11MB
  • 下载

OpenCV学习笔记之一:OpenCV中显示图片(VS2010+OpenCV3.0版本)

在写的过程中,参考了网上许多网友的blog,在此谢过。如有雷同,不是巧合。 一、OpenCV3.0的配置(百度) 1、  opencv下载: 具体下载地址,http://opencv.org...
  • fjqlldg
  • fjqlldg
  • 2016年08月12日 10:39
  • 907

VS2010的MVC3.0安装包

  • 2015年05月04日 11:37
  • 45.86MB
  • 下载

VS2010版MVC3.0安装组件

  • 2012年02月20日 16:54
  • 22.24MB
  • 下载

OpenGL学习入门之VS2010环境配置

OpenGL开发环境简介   基于OpenGL标准开发的应用程序运行时需有动态链接库OpenGL32.DLL、Glu32.DLL,这两个文件在安装Windows NT时已自动装载到C:...

ASP.NET MVC2, MVC3 & VS2010学习

2.28 毕业设计出了bug,没办法,现在看来是要重做了。唯一安慰自己的是借这个机会学习下.net下的MVC吧。 VS2010快捷键总结: (说来惭愧,搞.NET的我知道的快捷键竟然还不如知道E...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VS2010 mvc3.0学习入门原理 精华篇
举报原因:
原因补充:

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