一、异步的两种方法

  1. 用jQ的异步  返回content
    1. controllor:return Content(sum.ToString());//这里涉及到一个自动封装的问题
    2. html页:<form id="form1">
                      <input type="text" name="calc1" />+
                      <input type="text" name="calc2" />
                      <input type="button" id="btnAdd" value="加" />
                      <input type="text" name="sum" id="sum" />
                  </form>
    3. $(function () {
                  $('#btnAdd').click(function () {
                      $.post(
                          '@Url.Action("CalcAdd","Home")',//提交到的地址
                          $('#form1').serialize(),//把表单的数据序列化发送
                          function (msg) {//回调函数,msg是接收到的服务器端发来的数据
                              $('#sum').val(msg);
                          }
                          )
                  })
              })

2.AjaxHelper类

  1. controller代码
    1. public ActionResult CalcAdd1(int calc1, int calc2)
    2. return Json(temp, JsonRequestBehavior.AllowGet);
  2. html代码
    1. @using (Ajax.BeginForm("CalcAdd1", "home", new AjaxOptions()
              {
                  OnSuccess = "Success"
              }))
              {
                  <input type="text" name="calc1" />
                  <span>+</span>
                  <input type="text" name="calc2" />
                  <input type="submit" value="=" />
                  <input type="text" id="result" />
              }
  3. 调用的脚本
    1. <script src="~/jquery-1.8.3.min.js"></script>
          <script src="~/jquery.unobtrusive-ajax.min.js"></script>

二、MVC的常识

1.控制器(Controller)- 接收用户输入,并完成模型、视图的调用,业务逻辑处理lController 处理用户交互,从model中获取数据并将数据传给指定的view
2.视图 (View) - 为用户展示结果,View 是用户接口层组件。主要是将Model中的数据展示给用户。ASPX和ASCX文件被用来处理视图的职责    
3.模型 (Model)- lModel是存储或者是处理数据的组件,具有两个方面的含义:DomainModel,ViewModel

 
三、路由简介
1.在Global中注册了路由数据
2.包括:默认Controller,默认Action,请求地址匹配路由规则
 
四、Razor视图引擎简介
1.强大的@:表示使用C#代码,相当于aspx中的<%%>
2.可以完成输出功能
3.当遇到html标签时会认为C#代码结束,贪婪匹配后面的内容,如@a1会认为是变量a1,如@a<br>1会认为是变量a
4.会对标签内容进行Html编码
5.注释:@*注释内容*@
6.注意:@变量表示输出,结尾不加分号
7.引入命名空间:@using 命名空间;
 
 
五、HtmlHelper
lHelper:是为了方便View的开发而产生的
lHtmlHelper的演变
•普通链接:<a href="/home/index">首页</a>
•当路由规则改变时,几乎所有的超连接都要更改
•借助Url根据路由规则生成链接地址:<a href=“@Url.Action(”Index“,”Home“)”>首页</a>
•缺陷是不能编译时排错,只有运行时才知道是否正确
•专门用于MVC的链接方式:Html.Action(“Home”,“Index”),会根据路由规则生成a标记并且在运行时可以进行有效性检查,不需要用户点击链接后才知道链接出,错了
  • 标签框:Html.Label(string expression,string text):会生成一个label标记,并显示text内容
  • 文本框:Html.TextBox(“AA”);//会自动取ViewDate中键为AA的值,同时会以“AA”作为生成的HTML控件的id与name属性的值
  • 隐藏域:Html.Hidden(“AA”)//同TextBox
  • 注意:没有提交按钮、按钮的封装
 
六、表单(BeginForm)
l表单方式一:using(Html.BeginForm(actionName,controllerName)){…}
l表单方式二:
•@Html.BeginForm(actionName,controllerName)
•…
•@{Html.EndForm();}
 
七、强类型视图
    手动创建强类型视图
•在ViewModel中创建一个类型
•在Action中为ViewData.Model赋值
•在View中使用“@model 类型”设置
    根据菜单创建强类型视图
    优点
•在编译时可以完成代码检验
•智能提示
 
八、关于get、post和request
1.一般继承自Controller类,类Controller继承自ControllerBase,实现了IController接口
2.Action的本质就是类中的公有方法,可以进行重载,要求参数不同
3.可以接收客户端的Get或Post请求,如果希望某个方法只处理某一种请求,可以在方法前加特性[HttpGet]或[HttpPost],处理请求时会根据参数进行相应方法的调用
4.也可以通过路由规则传递数据
 
接收参数
•方式一:使用Request根据key接收value
•方式二:自动装备,在方法的参数位置,定义类型及参数名称,mvc会自动匹配相同名称的属性值,即匹配input的name与对象的属性相同名称的值
•还可以完成自定义类型参数的封装
•自动装配的要求:参数的名称或对象类型的属性必须与参数的键相同
 
九、ActionResult的几种返回
直接或间接继承自ActionResult的类型
•ViewResult:使用View()可以指定一个页面,也可以指定传递的模型对象,如果没有指定参数则表示返回与Action同名的页面
•ContentResult:使用Content(string content)返回一个原始字符串
•RedirectResult:使用Redirect(string url)将结果转到其它的Action
•JsonResult:使用Json(object data)将data序列化为json数据并返回,推荐加上JsonRequestBehavior.AllowGet可以处理Get请求,一般结合客户端的ajax请求进行返回
 
十、关于路由规则
1.路由规则Route:可以查看源代码了解一下构造方法,需要指定路由格式、默认值、处理器三个值
2.路由数据RouteData:当前请求上下文匹配路由规则而得到的一个对象,可以在Action中通过RouteData.GetRequestString(“controller/action”)获取本此请求中控制器或行为的真实名称
3.路由集合RouteCollection:存放路由规则的集合Collection<RouteBase>,一个MVC项目中,可以配置多个路由规则,按照键值对的格式存储到路由集合中
4.路由表RouteTable:类中包含静态的RouteCollection属性,完成所有路由规则的全局存储,在Global中完成注册
注意:对于一个网站,为了SEO友好,一个网址的URL层次不要超过三层
示例:localhost/{频道}/{具体网页},其中域名第一层, 频道第二层, 那么最后的网页就只剩下最后一层了. 如果使用默认实例中的“{controller}/{action}/{id}”的形式会影响网站的SEO,可以使用”/”之外的其它字符进行分隔,如”-”,但这时会进行严格匹配,即必须要有-才可以匹配到,默认值会失效
 
 
一些参数:

参数url
•设置url的路由规则,可变的值使用{}括起来
•关键字controller、action名称不可变
参数defaults
•设置路由规则中参数的默认值
•类型为object,可以传递一个匿名对象,属性取决于规则中定义的参数
•参数UrlParameter.Optional表示可选的只读参数
•如果在实际的url中没有指定路由规则中某些参数,则会使用默认值作为参数的值使用
参数constraints
•设置路由规则的约束
•类型为object,可以传递一个匿名对象,属性取决于规则中定义的参数
•参数是正则表达式字符串,如controller=“^[a-z]+$”
 
 
路由调试
路由规则调试
•当我们写了多个路由规则之后,如何确定路由规则是否都正确呢?这些路由规则之间是否有重复呢?这就需要使用RouteDebug进行分析
操作步骤
•在当前项目中添加程序集RouteDebug的引用
•在Global文件的Application_Start方法中,在完成路由规则注册的后面,进行调试注册:RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
•如果不想进行路由调试,只需要将这句代码删除或注释即可
 
 
路由的总结:
总结
•路由规则可以注册多条
•路由规则的名称不能重复
•路由规则有顺序,并且按照顺序进行匹配;建议子频道的路由规则配置在前面
•路由规则可以设置约束
•路由规则匹配的控制器可以设置命名空间约束
 
 
十一、校验
在Model中创建类型,用于在View中作为强类型页面的类型
NET 框架中System.ComponentModel.DataAnnotations命名空间包括了众多可用的内置验证特性,用于修饰属性,常用的四个如下:
•[Required]
•[StringLength]
•[Range]
•[RegularExpression]
•属性ErrorMessage:指定错误提示信息
 
 
在View的页面中,首先指定页面强类型@model 类型
使用Html.***For(model=>model.Property)生成表单,这些表单元素中就会包含校验规则属性
引用jquery、jquery校验、jquery隐式校验3个组件
通过Html.EnableClientValidation(true);控制客户端验证的启用与禁用(mvc3中自动开启)
使用Html.ValidationMessageFor(…)显示校验信息,也可以使用Html.ValidationSummary()统一显示
点击提交按钮转到后台Action,使用ModelState.IsValid判断前台验证是否成功,如果返回true表示验证成功
 
 
十二、Area
在项目上右击-》添加-》Area,填写名称后确定,会在这个项目上建一组文件夹出来,就像是一个子项目
修改此文件夹下的***AreaRegistration代码,可以在这个文件中进行路由注册
在Global中进行区域路由注册:AreaRegistration.RegisterAllAreas();

MVC入门第一天的更多相关文章

  1. [MVC.NET] Asp.Net MVC3 简单入门第一季

    转自:http://www.cnblogs.com/fly_dragon/archive/2011/10/12/2208042.html 初识Asp.Net MVC2.0 初识Asp.Net MVC2 ...

  2. Asp.net MVC入门视频教程

    编程开发 > Asp.net视频教程 > Asp.net MVC入门视频教程 > 1.传统web处理方式和mvc处理方式 上传日期:2014-08-16 10:02:45  相关摘要 ...

  3. Asp.Net MVC3 简单入门第一季(三)详解Controller之Filter

    前言 前面两篇写的比较简单,刚开始写这个系列的时候我面向的对象是刚开始接触Asp.Net MVC的朋友,所以写的尽量简单.所以写的没多少技术含量.把这些技术总结出来,然后一简单的方式让更多的人很好的接 ...

  4. Asp.Net Web API 2(入门)第一课

    Asp.Net Web API 2(入门)第一课   前言 Http不仅仅服务于Web Pages.它也是一个创建展示服务和数据的API的强大平台.Http是简单的.灵活的.无处不在的.你能想象到几乎 ...

  5. Spring MVC入门讲解

    一.Springmvc是什么? Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想, 将web层进行职责解耦,基 ...

  6. 史上最强Spring mvc入门

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...

  7. ASP.NET MVC 入门

    ASP.NET MVC 入门 (Learning ASP.NET MVC) 传统的WebForm发展到如今出现不少的缺陷, 比如为了解决Http的无状态WebForm模式使用了ViewsState来保 ...

  8. Java基础-SSM之Spring MVC入门篇

    Java基础-SSM之Spring MVC入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Spring MVC简介 1>.什么是Spring MVC 答:Sprin ...

  9. ASP.Net Core 2.2 MVC入门到基本使用系列 (一)

    本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体 ...

随机推荐

  1. python des ecb 加密 demo

    # -*- coding:utf-8 -*- from pyDes import * def hexString2bytes(src): ret =[] for i in range(len(src) ...

  2. rabbitmq 的心跳机制&应用

    官方文档说: If a consumer dies (its channel is closed, connection is closed, or TCP connection is lost) w ...

  3. mongodb的查询语句学习摘要

    看了些资料,对应只需要知道怎么查询和使用mongodb的我来说,这些足够啦. 左边是mongodb查询语句,右边是sql语句.对照着用,挺方便. db.users.find() select * fr ...

  4. Xtrabackup 安装使用

    一 简介:      Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品.它能对Inno ...

  5. iOS 归档archive使用方法

    归档是一种很常用的文件储存方法,几乎任何类型的对象都能够被归档储存,文件将被保存成自定 义类型的文件,相对于NSUserDefault具有更好的保密性.   1.使用archiveRootObject ...

  6. FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅

    1.必要的准备工作 工欲善其事,必先利其器,在开始学习和移植之前,相应的准备工作必不可少.所以在开始我们写要准备如下: 测试环境:我准备在STM32F103平台上移植和测试FreeRTOS系统 准备F ...

  7. button按钮波纹,箭头特效css

    波纹特效: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <tit ...

  8. hashmap实现原理浅析

    看了下JAVA里面有HashMap.Hashtable.HashSet三种hash集合的实现源码,这里总结下,理解错误的地方还望指正 HashMap和Hashtable的区别 HashSet和Hash ...

  9. Oracle Database 11g Release 2(11.2.0.3.0) RAC On Redhat Linux 5.8 Using Vmware Workstation 9.0

    一,简介 二,配置虚拟机 1,创建虚拟机 (1)添加三块儿网卡:   主节点 二节点 eth0:    公网  192.168.1.20/24   NAT eth0:    公网  192.168.1 ...

  10. 如何利用 JConsole观察分析Java程序的运行,进行排错调优

    原文链接:http://jiajun.iteye.com/blog/810150 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...