一、目录的认识
https://www.runoob.com/aspnet/mvc-folders.html
二、约定大于配置
1、方法的名称与视图的名称一致。
2、视图要放在Views文件下的当前方法所在控制器名称一致的文件夹内。
三、添加数据
1、如果方法的参数与表单元素name属性的值一致的话,会自动填充。
2、如果表单元素name的属性的值与实体类中属性的名称一致,那么表单中的数据会自动赋值给实体中的属性。
[HttpPost] public ActionResult Register(UserInfo userInfo) { userInfo.RegTime = DateTime.Now; CRUDDbContext dbContext = new CRUDDbContext(); dbContext.UserInfo.Add(userInfo); if (dbContext.SaveChanges() > 0) { return Content("ok"); } else { return Content("no"); } }
3、同一个方法处理post和get请求,可以使用隐藏域的方式来区分。也可以使用重载方法,然后使用特效标签[HttpPost]进行区分。
<form method="post" action=""> 姓名:<input type="text" name="Name"/><br /> 密码:<input type="password" name="Pwd"/><br /> 邮箱:<input type="text" name="Email"/><br /> <input type="submit"value="注册" /> </form>
public ActionResult Register() { return View(); } [HttpPost] public ActionResult Register(string Name, string Pwd, string Email) { UserInfo userInfo = new UserInfo(); userInfo.Name = Name; userInfo.Pwd = Pwd; userInfo.Email = Email; userInfo.RegTime = DateTime.Now; CRUDDbContext dbContext = new CRUDDbContext(); dbContext.UserInfo.Add(userInfo); if (dbContext.SaveChanges() > 0) { return Content("ok"); } else { return Content("no"); } } }
public class UserInfo { [Key] public int ID { get; set; } [StringLength(32)] [Required] public string Name { get; set; } [StringLength(32)] [Required] public string Pwd { get; set; } [Required] public DateTime RegTime { get; set; } [StringLength(32)] [Required] public string Email { get; set; } }
四、列表展示数据
1、ViewData可以将Controller数据传递到View中
public ActionResult Index() { CRUDDbContext dbContext = new CRUDDbContext(); var users = dbContext.UserInfo; ViewData["UserInfo"] = users; return View(); }
<tr><th>编号</th><th>用户名</th><th>密码</th><th>注册时间</th><th>邮箱</th></tr> @{ foreach (var item in (IQueryable<WebApplication1.Models.UserInfo>)ViewData["UserInfo"]) { <tr><td>@item.ID</td><td>@item.Name</td><td>@item.Pwd</td><td>@item.RegTime</td><td>@item.Email</td></tr> } }
五、修改数据
1、通过URL传递过来的参数会自动赋值给该方法的参数,但是该方法的参数名称一定要与路由规则中定义的参数名称一致,否则出错。
@{ foreach (var item in (IQueryable<WebApplication1.Models.UserInfo>)ViewData["UserInfo"]) { <tr><td>@item.ID</td><td>@item.Name</td><td>@item.Pwd</td><td>@item.RegTime</td><td>@item.Email</td><td><a href="/UserInfo/ShowDetail?id=@item.ID">详细</a></td></tr> } }
public ActionResult ShowDetail(int id) { return Content(id.ToString()); }
2、Model传值
public ActionResult ShowDetail(int id) { CRUDDbContext dbContext = new CRUDDbContext(); var users = dbContext.UserInfo.Where(u => u.ID == id).FirstOrDefault(); return View(users); }
<form method="post" action="/UserInfo/ShowDetail?id=@Model.ID"> 姓名:<input type="text" name="Name" value="@Model.Name"/><br /> 密码:<input type="text" name="Pwd" value="@Model.Pwd"/><br /> 邮箱:<input type="text" name="Email" value="@Model.Email" /><br /> <input type="submit" value="修改" /> </form>