MVC简介

一、目录的认识

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>

 

posted on 2020-03-05 11:45  爱写代码的鸟  阅读(445)  评论(0编辑  收藏  举报