我正在我的Controller中编写HttpGet和HttpPost方法.我得到了HttoPost方法,但我对从HttpPost重定向到HttpGet方法有一些疑问.
[HttpGet]
public async Task<ActionResult> GetData(MyViewModel model)
{
// Get Data
return View(model);
}
[HttpPost]
public async Task<ActionResult> UpdateData(MyViewModel model)
{
try
{
if (ModelState.IsValid)
{
// Update updatedModelObject
//return RedirectToAction("GetData", updatedModelObject);
return RedirectToAction("GetData");
}
}
catch (Exception)
{
}
//return RedirectToAction("GetData", "MyController");
//return RedirectToAction("GetData");
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
当我单击页面上的提交按钮时,它会调用HttpPost UpdateData方法.如果是ModelState.IsValid,它会更新数据库并调用RedirectToAction("GetData").它确实有效并调用HttpGet方法从数据库进行另一次调用.这是我的问题,如果ModelState.IsValid为false,它将调用导致错误的View(模型):
The view 'UpdateData' or its master was not found or no view
engine supports the searched locations. The following locations were
searched:
~/Views/MyController/UpdateData.cshtml
~/Views/MyController/UpdateData.vbhtml
~/Views/Shared/UpdateData.cshtml
~/Views/Shared/UpdateData.vbhtml
~/__MVCSITEMAPPROVIDER/UpdateData.ascx
Run Code Online (Sandbox Code Playgroud)
我一直在阅读许多帖子,其中示例HttpGet和HttpPost方法都命名为Index(),因此它不会像我得到的那样得到相同的错误.我使用了不同的HttpGet和HttpPost方法名称,因此它正在寻找UpdateData.cshtml.从我读过的帖子中,他们说如果Model.IsValid为true,则调用带有更新模型的HttpGet来传递.如果Model.IsValid为false,则帖子会调用View(model)来传递相同的模型数据.
这是我的问题.
我应该调用什么而不是View(模型)来传递具有相同模型的View来刷新查看相同的模型数据并避免错误?作为代码,它寻找UpdateData.cshtml
如果ModelState.IsValid为true,它将更新数据库并调用HttpGet以从数据库中获取刷新的数据,并将模型传递给GetData中的View.但是如果ModelState.IsValid为false,则调用View(model).这会调用HttpGet还是应该用旧模型数据刷新View?
谢谢.
我应该调用什么而不是View(模型)来传递具有相同模型的View来刷新查看相同的模型数据并避免错误?作为代码,它寻找UpdateData.cshtml
而不是return View(model);传递视图名称以返回,与模型:
return View("GetData", model);
Run Code Online (Sandbox Code Playgroud)
如果ModelState.IsValid为false,则调用View(model).这会调用HttpGet还是应该用旧模型数据刷新View?
使用任何ModelState信息将填充的模型呈现给用户,以便他们可以修复验证.
GET操作不会再次处理.
| 归档时间: |
|
| 查看次数: |
1435 次 |
| 最近记录: |