一、目录的认识

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>