5

我是 MVC 和 ASP.NET 的新手。我的要求是,我必须第一次在我的视图中显示两条记录,并且我的视图包含一个“SWAP”按钮。当我按下这个按钮时,控制器的发布操作应该执行,它必须采用原始视图模型,需要交换两条记录,并且应该呈现相同的视图。每当我按下交换按钮时,这个过程都应该进行。

当我第一次单击 SWAP 时,它工作正常。但是当我下次单击时,我的后控制器操作正在获取原始记录并显示相同的记录。

我的控制器代码如下所示。

public ActionResult Dedupe()
        {
            var selectedClients = TempData["SelectedClients"] as DedupeClientsViewModel;
            return this.View(selectedClients);
        }

        [HttpPost]
        public ActionResult Dedupe(DedupeClientsViewModel dedupeClients)
        {
            if (ModelState.IsValid)
            {
                //my functionality
            }
            return this.View(dedupeClients);
        }

我需要用“ModelState”做什么才能从视图中获取新数据吗?

4

1 回答 1

6

因为您从帖子中返回相同的模型,所以 ASP.Net MVC 假设您有错误要呈现给用户(因此它保留原始值)。您可以通过清除整个模型的模型状态或清除一个或多个字段的模型状态来解决此问题。见下文。当然,这将在您的控制器中完成。

ModelState.Clear(); //clear entire model state
ModelState.Remove("MyObject.MyProperty"); //clear only one property

Rick Strahl 在他的博客上对这个问题有一个很好的解释:ASPNET-MVC-Postbacks-and-HtmlHelper-Controls-ignoring-Model-Changes

于 2012-12-28T18:03:26.183 回答