表单提交后更新视图

时间:2018-02-05 21:05:15

标签: c# asp.net-mvc form-submit

在我的MVC控制器中,我有两种操作方法。

第一个是索引方法:

public IActionResult Index()
    {
        return PopulateViewModel();
    }

" PopulateViewModel" Action Method用于更新视图模型,然后在Index视图上显示这些更新的值。

public IActionResult PopulateViewModel()
    {
        ViewModel viewModel = new ViewModel()
        {
           //updating values in the view model
           //the values are received when the form in the view is submitted
        };

        return View("Index", viewModel);
    }

我遇到的问题是,在我的索引视图中,在视图中提交表单后,不会立即显示更新的值。当我提交表单时,我必须再次刷新页面以查看更新的值。

这种行为可能是什么原因,我该如何纠正?

1 个答案:

答案 0 :(得分:0)

你误解了概念概念。该索引应该代表初始页面状态。控制器内的其他操作将通过使用调整后的模型呈现页面来修改输出。或者处理服务器端模型绑定,但这个概念从根本上实现了相同的结果。

您的控制器逻辑应在以下约束范围内。

public class SampleController : Controller
{
     public IActionResult Index() => new View("...", ...);

     public IActionResult SubmitSample(string location)
     {
          var model = service.GetLabLocations(location);
          return View("...", model);
     }
}

索引正在模拟GET请求,将初始页面返回到所需状态。表单部分应该是POST数据,在代码的SubmitSample部分中列出。这将更改页面的状态,但服务器需要使用这些更改进行渲染。因此页面将加载附加的模型,供您显示。

这很可能代表Razor在服务器端。

@if(Model != null)
     foreach(var sample in Model)
     {
          // Markup, with the data
     }