自学mvc,看了园子里李林峰写的李林峰写的无废话MVC入门教程笔记,现在有的平时忽略的或是不太清楚的点记下来

1,Html.DropDownList

//服务端写法
@{
//下拉列表的值
List<SelectListItem> selectList = new List<SelectListItem>();
selectList.Add(new SelectListItem { Value = "", Text = "列表项一" });
selectList.Add(new SelectListItem { Value = "", Text = "列表项二" });
}
@Html.DropDownList("ddlList", (SelectList)new SelectList(selectList.AsEnumerable(), "Value", "Text"))
//客户端生成
<select id="ddlList" name="ddlList"><option value="">列表项一</option>
<option value="">列表项二</option>
</select>

2,母版页

a,页面主内容是由@RenderBody()来标识

b,@ViewBag.Title 即是一个标题的占位符,在Control里或页面中给该标题的变量赋值。

c,母版页@RenderSection("MasterPart", false) ,@RenderSection方法接受两个参数:("名称","是否是必须的"),如果是必须的那么子页面必须实现该方法,否则会报错。@section MasterPart{这里是母板页的第二部分},@section+空格+名称{内容}来实现母板页内容的替换。

d,Create as a patial view创建自定义内容,@Html.Partial("~/Views/Shared/_UserControl.cshtml")

e,当我们的页面未指定Layout的时候,如果项目在全局或在同文件夹内存在_ViewStart.cshtml时该页面的Layout会自动继承自_ViewStart.cshtml,如果不同的文件夹层级都存在_ViewStart.cshtml,则继承离该页面最近的一个。_ViewStart.cshtml是一个特殊的文件。

f,如果不想页面使用任何母板页和布局页,则需要设置Layout = null

3,RaddioButton

性别: 男 @Html.RadioButtonFor(user => user.Sex, 0, new { @name = "sex", @checked = "true" })

   女 @Html.RadioButtonFor(user => user.Sex, 1, new { @name = "sex" })


4,数据验证
a,
        [Display(Name = "特殊数字")]
[Required(ErrorMessage = "请输入{0}")]
[StringLength(, ErrorMessage = "{0}在{2}位至{1}位之间", MinimumLength = )]
public string InputNumber { get; set; }

[Display(Name = "特殊数字")]:视图如显示的名称,具体看运行效果。

[Required(ErrorMessage = "请输入{0}")]:InputNumber是必须填写的,如果不填写ErrorMessage属性的值将以显示在页面上。{0}为Display中Name属性的占位符。

[StringLength(20, ErrorMessage = "{0}在{2}位至{1}位之间", MinimumLength = 1)]:字符串长度为:1-20之间。{0}、{1}、{2}分别为参数的占位符。{0}Name,{1}1{2}20

b,[RegularExpression(@"^[0-5]*$", ErrorMessage = "只能输入0-5间的数字")]:第一个参数为要验证的正责表达式,第二个参数为错误消息。

c,继承方式实现共用数据校验,用一个类去继承RegularExpressionAttribute,从而达到封装正责表达式和错误消息作用,类代码如下:

using System;
using System.ComponentModel.DataAnnotations; namespace MVC3.Demo.App_Code
{
public class SpecialValidation : RegularExpressionAttribute
{
public SpecialValidation() : base(@"^[0-5]*$") { } public override string FormatErrorMessage(string name)
{
return String.Format("{0}在0-5之间", name);
}
}
}

使用代码如下

using System.ComponentModel.DataAnnotations;
using MVC3.Demo.App_Code; namespace MVC3.Demo.Models
{
public class ValidationModel
{
[SpecialValidation]
public string InputNumber { get; set; }
}
}

5,富客户端用extjs和juqeryui

6,在MVC中使用AOP

a,创建属性类继承ActionFilterAttribute

using System.Web.Mvc;

namespace MVC3.Demo.App_Code
{
public class LogActionFilter : ActionFilterAttribute
{
public string LogMessage { get; set; } public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.HttpContext.Response.Write(@"在Action执行之前执行" + LogMessage + "<br />");
base.OnActionExecuting(filterContext);
} public override void OnActionExecuted(ActionExecutedContext filterContext)
{
filterContext.HttpContext.Response.Write(@"在Action执行之后执行" + LogMessage + "<br />");
base.OnActionExecuted(filterContext);
} public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.HttpContext.Response.Write(@"在Result执行之前执行" + LogMessage + "<br />");
base.OnResultExecuting(filterContext);
} public override void OnResultExecuted(ResultExecutedContext filterContext)
{
filterContext.HttpContext.Response.Write(@"在Result执行之后执行" + LogMessage + "<br />");
base.OnResultExecuted(filterContext);
}
}
}

使用方式

         [LogActionFilter(LogMessage = "日志写入:Validation方法")]
public ActionResult Validation()
{
return View();
}

7,关于分页,我看园子里力推杨涛的WebPager,方法很多,试用了一种最简单的,还是很好用的,mark一下

using Webdiyer.WebControls.Mvc;
//控制器和view都添加这个引用,当然还有webconfig但是配置了没用不知道为什么
//控制器代码
return View(foodList.OrderByDescending(a => a.MyFood.BuyDate).ToPagedList(id, ));
//View代码
@Html.Pager(Model,new PagerOptions{PageIndexParameterName = "id",ShowPageIndexBox = true,PageIndexBoxType = PageIndexBoxType.DropDownList,ShowGoButton = false})
@section Scripts{@{Html.RegisterMvcPagerScriptResource();}}

MvcPager主页地址:http://www.webdiyer.com/

里面有多种实现方式,有需要的自己看看,实现一下,相信很容易。

 

无废话MVC入门教程笔记的更多相关文章

  1. 无废话MVC入门教程二[第一个小Demo]

    mvc技术交流,欢迎加群: 本文目标 1.了解"模型"."视图"."控制器"的创建.调试和使用过程. 本文目录 1.创建模型 2.创建视图 ...

  2. 无废话MVC入门教程一[概述、环境安装、创建项目]

    (转载) 本文目标 1.对MVC有初步的了解 2.能够在VS2010的基础之上安装MVC3的开发和运行环境 3.对MVC框架有概括性的认识 本文目录 1.什么是MVC 2.VS2010安装MVC3 3 ...

  3. WCF入门教程(四)通过Host代码方式来承载服务 一个WCF使用TCP协议进行通协的例子 jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding System.ServiceModel.WSHttpBinding协议 学习WCF笔记之二 无废话WCF入门教程一[什么是WCF]

    WCF入门教程(四)通过Host代码方式来承载服务 Posted on 2014-05-15 13:03 停留的风 阅读(7681) 评论(0) 编辑 收藏 WCF入门教程(四)通过Host代码方式来 ...

  4. 无废话ExtJs 入门教程二十一[继承:Extend]

    无废话ExtJs 入门教程二十一[继承:Extend] extjs技术交流,欢迎加群(201926085) 在开发中,我们在使用视图组件时,经常要设置宽度,高度,标题等属性.而这些属性可以通过“继承” ...

  5. 无废话ExtJs 入门教程二十[数据交互:AJAX]

    无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...

  6. 无废话ExtJs 入门教程十九[API的使用]

    无废话ExtJs 入门教程十九[API的使用] extjs技术交流,欢迎加群(201926085) 首先解释什么是 API 来自百度百科的官方解释:API(Application Programmin ...

  7. 无废话ExtJs 入门教程十七[列表:GridPanel]

    无废话ExtJs 入门教程十七[列表:GridPanel] extjs技术交流,欢迎加群(201926085) 在Extjs中,GridPanel用于数据显示,即我们平时说的列表页.在本节中,我们先对 ...

  8. 无废话WCF入门教程六[一个简单的Demo]

    一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...

  9. 无废话ExtJs 入门教程十六[页面布局:Layout]

    无废话ExtJs 入门教程十六[页面布局:Layout] extjs技术交流,欢迎加群(201926085) 首先解释什么是布局: 来自百度词典的官方解释:◎ 布局 bùjú: [distributi ...

随机推荐

  1. 前端用户输入校验--基于JQ

    <!DOCTYPE html> <html> <head> <title>用户输入校验</title> </head> < ...

  2. bzoj 4589 Hard Nim——FWT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4589 一开始异或和为0的话先手必败.有 n 堆,每堆可以填那些数,求最后异或和为0的方案数, ...

  3. 3.Monkey Script小案例

    1.实现打开搜狗搜索APP,在搜索框输入内容,点击回车,重复2次运行 2.实现代码如下所示: type=user count=10 speed=1.0 start data >> Laun ...

  4. 让32位应用程序不再为2G内存限制苦恼

    最近在做个程序,虽然是小型程序,但是使用的内存量却很大,动辄达到10G.在64位系统上可以轻松实现,无奈我是基于32位的系统进行开发,程序还没跑起来就已经被终止了.      试过很多办法,包括文件内 ...

  5. Fork/Join框架介绍

    转http://www.infoq.com/cn/articles/fork-join-introduction/ 1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用 ...

  6. PDM后续处理-驼峰规则、清除约束、外键改名

    Option   Explicit ValidationMode   =   True InteractiveMode =   im_Batch Dim   mdl   '当前model '获取当前活 ...

  7. PowerDesigner中的域(Domain)的概念及应用

    一.概念 域:实际上就是一个取值范围,也可扩展为一个数据类型.域可以定义检查约束.取值范围.最大值.最小值.默认值等. 域是通过用户自定义类型实现的,定义一个域的后,可以实多个实体的属性共享,这也模型 ...

  8. 2015.5.9 C#编写DLL及C#调用C#DLL

    过程比C#调用VC++dll简单. 一.创建DLL 新建工程,类型选择类库,生成的结果就是dll 注意:在项目属性-应用程序中,注意三个地方,程序集名称和默认命名空间可以调整,但要一致,别的程序调用此 ...

  9. scrapy(1)安装

    用的是python3.6 pip install -i https://pypi.douban.com/simple/ scrapy scrapy startproject Article scrap ...

  10. Proxy模式 代理模式

    Android的 LocalWindowManager 和 WindowManagerImgl 都实现了WindowManager接口.LocalWindowManager 中保存一个WindowMa ...