自学mvc,看了园子里李林峰写的李林峰写的无废话MVC入门教程笔记,现在有的平时忽略的或是不太清楚的点记下来
1,Html.DropDownList
//服务端写法 @{ //下拉列表的值 List<SelectListItem> selectList = new List<SelectListItem>(); selectList.Add(new SelectListItem { Value = "1", Text = "列表项一" }); selectList.Add(new SelectListItem { Value = "2", Text = "列表项二" }); } @Html.DropDownList("ddlList", (SelectList)new SelectList(selectList.AsEnumerable(), "Value", "Text")) //客户端生成 <select id="ddlList" name="ddlList"><option value="1">列表项一</option> <option value="2">列表项二</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(20, ErrorMessage = "{0}在{2}位至{1}位之间", MinimumLength = 1)] 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