c# - Asp.Net MVC - 空白模型不返回空白数据

标签 c# asp.net asp.net-mvc

我有一个表单,用户也可以用他们想要的数据填写 x 次。表单发布到以下操作。

        [HttpPost]
        public ActionResult Manage(ProductOptionModel DataToAdd)
        {
            if (!ModelState.IsValid)
            {
                return View(DataToAdd);
            }

            var ProdServ = new ProductService();

            if (DataToAdd.ID != 0)
            {
                //Edit Mode.
                DataToAdd = ProdServ.EditProductOption(DataToAdd);
                ViewData["Message"] = "Option Changes Made";

            }else
            {
                //Add
                DataToAdd = ProdServ.AddProductOption(DataToAdd);
                ViewData["Message"] = "New Option Added";
            }

            var RetModel = new ProductOptionModel() {ProductID = DataToAdd.ProductID};
            return View(RetModel);
        }

所以在底部,我将模型清空(只留下必填字段),然后返回到 View 。然而,该 View 保留了之前提交的表单中的数据。

有什么想法吗?我调试了代码并检查了 RetModel 变量是否为空。

最佳答案

当在 HTTP POST 上返回 View 时,Html 助手以这种方式工作。他们更喜欢发布数据而不是模型值。

使用发布/重定向/获取

这就是为什么我建议您使用 Post/Redirect/Get在 Asp.net MVC 中得到很好支持的模式。在 POST 成功完成后,您的 Controller 操作应重定向到某些 GET 操作,就像您的情况一样。

public ActionResult Process()
{
    return View(new Data { Id = -1 });
}

[HttpPost]
public ActionResult Process(Data data)
{
    if (!this.ModelState.IsValid)
    {
        return View(data);
    }
    new MyService().ProcessData(data);
    return RedirectToAction("Process");
}

如果您显示所有以前输入的数据,您可以在 GET 操作中提供这些数据,或者使用 TempData 字典将它们从 POST 传输到 GET 操作。

关于c# - Asp.Net MVC - 空白模型不返回空白数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2957768/

相关文章:

c# - 自旋锁,它们有多大用处?

c# - 压缩大型词典

c# - 将类的属性传递给 ValidationAttribute

c# - 加载后面的代码后加载javascript代码

asp.net-mvc - Entity Framework - 无法创建类型为 x 的常量值。在此上下文中仅支持原始类型。

asp.net-mvc - 在 MVC Web 应用程序中访问 profile.newproperty

c# - 如何将长字符串转换为大数字

c# - 使用 linq 查询 xmlnode

javascript - 将文本上传到 javascript 中的 asp.net 通用处理程序

asp.net-mvc - Asp.Net MVC 如何测试 View 是否呈现