【问题标题】:Return action does not work correctly返回操作无法正常工作
【发布时间】:2011-03-07 16:49:21
【问题描述】:

我有一个简单的创建操作,可以将产品保存到数据库。保存我使用过的产品后 return View(new Product());重置表单字段但表单显示旧数据(提交表单之前的数据)。我也使用 return View(new Product(name="test"));但它也不起作用。 问题是什么?产品已正确保存到数据库(这意味着 ModelState.IsValid 为真)。我不想使用 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);
    }

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    我认为推荐的做法是使用RedirectToAction(),但如果您想以自己的方式尝试,您可以尝试

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

    【讨论】:

      【解决方案2】:

      如果您打算修改已经处于模型状态的属性,则需要将其删除,否则绑定到该值的 HTML 助手将始终使用模型状态中的值,而不是您修改的值:

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

      如果要清除所有属性,最好重定向或清除整个模型状态集合:ModelState.Clear();

      【讨论】:

        猜你喜欢
        • 2019-01-11
        • 1970-01-01
        • 2020-09-30
        • 1970-01-01
        • 1970-01-01
        • 2013-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多