2011-03-07 135 views
0

我有一个简单的创建操作,可将产品保存到数据库。在保存产品后,我使用了返回View(new Product());重置表单域,但窗体显示旧数据(提交表单之前的数据)。另外我使用return View(new Product(name =“test”));但它不起作用。 有什么问题?该产品正确保存到数据库(这意味着ModelState.IsValid为true)。我不想使用RedirectToAction。返回操作无法正常工作

[HttpPost] 
    public ActionResult New(Product product) 
    { 
     if (ModelState.IsValid) 
     { 
      product.SubmitDate = DateTime.UtcNow; 
      productRepository.Add(product); 
      productRepository.Save(); 

      //ViewBag.Message = "product is saved"; 
      return View(new Product()); 
     } 

     return View(product); 
    } 

回答

2

我想推荐的做法是使用RedirectToAction(),但如果你想尝试一下你的方式,你可以尝试

ModelState.Clear(); 
return View(new Product()); 
+0

+1 - RedirectToAction()肯定是一个在这里.. – 2011-03-07 17:23:34

0

如果要修改属性,它已经在模型状态您需要将其删除或绑定到这个值的HTML佣工总是使用模型状态和价值不在于你修改的一个:如果哟

ModelState.Remove("SubmitDate"); 
product.SubmitDate = DateTime.UtcNow; 
return View(product); 

你想清除所有的属性,它会更好地重定向或清除整个模型状态集合:ModelState.Clear();