use*_*601 5 asp.net-mvc asp.net-mvc-4
我是 MVC 和 ASP.NET 的新手。我的要求是,我必须第一次在我的视图中显示两条记录,并且我的视图包含一个“交换”按钮。当我按下这个按钮时,控制器的 post 动作应该执行并且它必须采用原始视图模型并且需要交换两条记录并且应该呈现相同的视图。每当我按下交换按钮时,这个过程应该继续。
当我第一次单击 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);
}
Run Code Online (Sandbox Code Playgroud)
我需要用“ModelState”做什么才能从视图中获取新数据。
因为您从帖子中返回相同的模型,所以 ASP.Net MVC 假设您有错误想要呈现给用户(因此它保留原始值)。您可以通过清除整个模型的模型状态或清除一个或多个字段的模型状态来解决此问题。见下文。当然,这将在您的控制器中完成。
ModelState.Clear(); //clear entire model state
ModelState.Remove("MyObject.MyProperty"); //clear only one property
Run Code Online (Sandbox Code Playgroud)
Rick Strahl 在他的博客上对这个问题有很好的解释:ASPNET-MVC-Postbacks-and-HtmlHelper-Controls-ignoring-Model-Changes
| 归档时间: |
|
| 查看次数: |
2268 次 |
| 最近记录: |