标签:
在园子里面查找了些MVC的资料。通过Demo来加强对MVC知识点的学习,归纳总结了几点:
一、访问方式:http:ip(localhost):port/ControllerName/MethodName?argName
二、 C#中的绑定和变量在aspx/cshtml的显示:
1、C#:ViewBag.Name=value/method; aspx/cshtml:@ViewBag.name
2、C#:ViewData["Name"]=value/method; aspx/cshtml:@(@ViewData["name"] as string) //类型转换
三、 通过控制器的方法名称生成对应的视图,视图名称和控制器的名称最好对应。
四、在Model中声明对象的属性对应数据库字段,同时可声明字段类型如: [Key]=》【主键】、 [Required]=》必填 etc。
五、通过引用using System.Data.Entity; 命名空间使得model实体对象继承 : DbContext。
在实体对象类里面声明对象如: public DbSet<Student> stuList { get; set; }
六、创建视图可更改名称、选择对应的Model类、引用脚步、操作的模版如:CRUD、是否是分布视图、选择的模版及占用的内容页对应的位置。
七、采用Entity Framework的CodeFrist生成对应的数据库表和数据库名称、
数据库名称由对象实体的空间名称和类名构成如:Mvc3Demo.Models.StudentEntities
八、通过linq的方式关联2张表如班级和学生表: var stulist = db.stuList.Include(s => s.scClass);
九、下拉菜单的绑定方法一:
ViewBag.外键ID=new SelectList(关联类集合,”关联类的ID”,”关联类中要显示的名称”,” 当前类中外外键ID用来作为被选中的值”)
页面调用 方法:@Html.DropDownList("外键ID", String.Empty)
下拉菜单的绑定方法二:
ViewBag.外键ID=关联类集合.OrderBy(m=>m.ColumnName).ToList();
页面调用:@Html.DropDownList("外键ID", new SelectList(ViewBag.集合 as
System.Collections.IEnumerable,"ID","ColumnName",Model.外键ID))
十、通过生成CRUD我们可以看到Edit方法其中一个有 [HttpPost],只是修改后表单提交post方式处理的方法,
而没有的那个是修改前Get方式查询的方法。
备注:常用的数据注解如下:摘自:某网友
[Display(Name = "姓名")] //显示的名称
[Required(ErrorMessage = "您需要填写{0}")] //必须字段 错误提示
[StringLength(50, MinimumLength = 3)] //设置最大长度和最小长度
[Range(1, 150, ErrorMessage = "年龄填写不正确!")] //设置 值范围
[Range(typeof(decimal), "50.00", "250.00", ErrorMessage = "高超出指定范围")]
[DataType(DataType.Date, ErrorMessage = "{0}格式不正确")] //设置数据类型以及错误提示
[DataType(DataType.MultilineText)] //多行文本
[RegularExpression(@"(\w)+(\.\w+)*@(\w)+((\.\w+)+)", ErrorMessage = "{0}格式不正确")] //正则验证
[DataType(DataType.Password)] //密码验证
[DataType(DataType.EmailAddress, ErrorMessage = "{0}格式不正确")] //邮箱格式验证
[Compare("Email", ErrorMessage = "{0}两次输入不一致")] //设置比较两个字段的值(自定义)
[Remote("CheckPhone", "StuInfo", ErrorMessage = "{0}已被注册")] //在指定的Conteroller中的通道(route)中验证数据[自定义]
* 页面验证方式如: @Html.ValidationMessageFor(model => model.age)。附控制器代码:
private StudentEntities db = new StudentEntities(); // // GET: /StudentManager/ public ViewResult Index() { var stulist = db.stuList.Include(s => s.scClass); return View(stulist.ToList()); } // // GET: /StudentManager/Details/5 public ViewResult Details(int id) { Student student = db.stuList.Find(id); return View(student); } // // GET: /StudentManager/Create public ActionResult Create() { ViewBag.scClassID = new SelectList(db.scClassList, "ID", "className"); return View(); } // // POST: /StudentManager/Create [HttpPost] public ActionResult Create(Student student) { if (ModelState.IsValid) { db.stuList.Add(student); db.SaveChanges(); return RedirectToAction("Index"); } ViewBag.scClassID = new SelectList(db.scClassList, "ID", "className", student.scClassID); return View(student); } // // GET: /StudentManager/Edit/5 public ActionResult Edit(int id) { Student student = db.stuList.Find(id); ViewBag.scClassID = new SelectList(db.scClassList, "ID", "className", student.scClassID); return View(student); } // // POST: /StudentManager/Edit/5 [HttpPost] public ActionResult Edit(Student student) { if (ModelState.IsValid) { db.Entry(student).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } ViewBag.scClassID = new SelectList(db.scClassList, "ID", "className", student.scClassID); return View(student); } // // GET: /StudentManager/Delete/5 public ActionResult Delete(int id) { Student student = db.stuList.Find(id); return View(student); } // // POST: /StudentManager/Delete/5 [HttpPost, ActionName("Delete")] public ActionResult DeleteConfirmed(int id) { Student student = db.stuList.Find(id); db.stuList.Remove(student); db.SaveChanges(); return RedirectToAction("Index"); }
标签:
原文地址:http://www.cnblogs.com/professional-NET/p/4765182.html