在我的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);
}
我遇到的问题是,在我的索引视图中,在视图中提交表单后,不会立即显示更新的值。当我提交表单时,我必须再次刷新页面以查看更新的值。
这种行为可能是什么原因,我该如何纠正?
答案 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
}