在数据库中插入数据后返回到mvc中的相同视图后使模型为null

时间:2013-12-24 07:18:03

标签: asp.net-mvc-4

我在视图中有一个名为Role的表单,其中包含用于填充Role值的表单。 为此,我在视图中使用模型。我的代码是

@using MyProject.Models
@model Role
<h2>AddRole</h2>
@using (Html.BeginForm()){ 
@Html.LabelFor(m=>m.RoleName)
@Html.TextBoxFor(m=>m.RoleName)<br />

<input type="submit" value="Add Role" />
}

提交后,它会转到我的控制器中的AddRole操作,我将此角色添加到数据库并返回到同一视图。 AddRole的代码是,

 [HttpPost]
 public ActionResult AddRole(Role role)
 {
 //Code for adding role into database
 using (UserDbContext db = new UserDbContext())
 ViewBag.Message= "Role successfully added.";
 return View("AddRole");
 }

向数据库添加值后,它仍然显示文本框中已有的类型值。 我希望它在添加到数据库后不得显示这些值。

我认为是这样,将角色值发送回视图,这就是为什么它在表单中显示这些值。所以我试着在操作中使该值为null。但是不行。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以执行ModelState.Clear()或执行GET请求回到您的AddRole页面,即return RedirectToAction("AddRole")。但是,后者不会保持你的ViewBag.Message;

答案 1 :(得分:0)

尝试使用

Role newRole=new Role();
ModelState.Clear();  // the fix
return View("AddRole",newRole);

如果有效,请更新我吗?