MVC与数据库传值(二)——EF模型
注:
- 跳转链接要符合路由规则
- MVC框架的cshtml页面设计元素不能使用控件
表单的传输:
在视图cshtml中
<form method="post" action="Job/Save">
@*method是传输方式,由页面传输到控制器,post是加密传输,get是普通传输
action是把表单提交给谁进行处理,应该提交给某个具体的,控制器的某个方法进行处理
不写明所属控制器,则在当下控制器去寻找方法*@
<table class="table table-bordered table-hover">
<tr>
<td>姓名:</td>
<td><input name="name" type="text" /></td>
</tr>
<tr>
<td>年龄:</td>
<td><input name="age" type="text" /></td>
</tr>
<tr>
<td>编号:</td>
<td><input name="id" type="text" /></td>
</tr>
<tr>
<td>职业:</td>
<td><input name="Career" type="text" /></td>
</tr>
<tr>
<td><input id="Submit1" type="submit" value="提交" class="btn btn-sm" /></td>
</tr>
</table>
</form>
在对应的控制器中创建方法:接收来自页面的数据
//save方法用于处理表单传递过来的数据
public ActionResult Save()
{
//数据封装
//实现从前端视图获取数据,由于前端是从表单提交的,那就用表单的方法接收
//默认取值结果是String类型,此处用键值对取值,
//添加到数据库中,创建Job对象,然后将获取的值封装到此对象中,
//将该对象交给数据库上下文对象,调用add()方法进行数据添加
Job j = new Job();
j.name = Request["name"];
j.age = Convert.ToInt32(Request["age"]);
j.id = Convert.ToInt32(Request["id"]);
j.Career = Request["Career"];
//交给数据库
db.Entry(j).State = System.Data.Entity.EntityState.Added;
//状态修改,ADD其实可以不用,但查改删需要先修改状态
db.Jobs.Add(j);
//保存
db.SaveChanges();
//保存之后,应该跳转到数据显示的主页,进行数据的更新显示
//需要跳转到上面的Index()方法,用Redirect()跳转到另一个方法
return Redirect("Index");
}
另一种接收数据的方法:
public ActionResult Save(FormCollection fc)
{
//FormCollection是用来从窗体上取值的一个类,把表单里面的数据全部放到Form类里面
//然后通过标签名称来从Form类里取值
Job j = new Job();
j.name = fc["name"];
j.age = Convert.ToInt32(fc["age"]);
j.Career = fc["Career"];
db.Jobs.Add(j);
//保存
db.SaveChanges();
//保存之后,应该跳转到数据显示的主页,进行数据的更新显示
//需要跳转到上面的Index()方法,用Redirect()跳转到另一个方法
return Redirect("Index");
}
运行结果:
点击添加按钮之后跳转页面
输入数据:
选择提交: