一、异步的两种方法

  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. 各大安卓应用市场APP上传提交与收录

    360 提交网址 应用宝 提交网址 百度 提交网址 91 提交网址 安卓 提交网址 PP助手 提交网址 小米 提交网址 华为 提交网址 OPPO 提交网址 魅族 提交网址 乐视 提交网址 豌豆荚 提交 ...

  2. 【转】android中ListView的定位:使用setSelectionFromTop实现ListView的position的保持

    如果一个ListView太长,有时我们希望ListView在从其他界面返回的时候能够恢复上次查看的位置,这就涉及到ListView的定位问题: 解决的办法如下: 1 2 3 4 5 6 7 // 保存 ...

  3. 程序中使用ajax时,type为put,或者delete时在 IIS上没效果,发生HTTP Error 405.0 - Method Not Allowed

    其实使用put delete  是在创建webapi中基本才会使用. WebDAV 是超文本传输协议 (HTTP) 的一组扩展,为 Internet 上计算机之间的编辑和文件管理提供了标准.利用这个协 ...

  4. js计算地球两个经纬度之间的距离

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 配置SVN、GIT总结

    SVN使用说明 svn地址(可以是内网,也可以是外网的):svn://192.168.3.1/xxxhttp://192.168.3.1/xxxhttps://192.168.3.1/xxx 一个sv ...

  6. Oracle监听的静态注册和动态注册

    静态注册:通过解析listene.ora文件 动态注册:由PMON进程动态注册至监听中 在没有listener.ora配置文件的情况下,如果启动监听,则监听为动态注册.用图形化netca创建的监听,默 ...

  7. [JAVA]HTTP请求应答作输入输出

    请求(需要发送数据给别人): URL url = new URL("需要请求的URL连接"); HttpURLConnection httpConnection = (HttpUR ...

  8. EventBus 一

    一.概述 EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间 ...

  9. Spring Boot下配置MyBatis多数据源

    http://m.blog.csdn.net/article/details?id=51481911

  10. iOS 隐藏键盘的几种常见方法

    1.设置return key,然后为Did End On Exit事件添加响应方法,并在方法内添加代码:[self.textfieldName resignFirstResponder]. 2.将背景 ...