我使用多个提交按钮来处理通过asp-action标记助手提交表单的不同方式(我也使用了具有相同结果的html5格式化方法)。 它正确地命中了控制器方法,但当我在模型上进行自己的自定义验证并添加了模型状态错误并传回原始视图时,URL更改为我调用的控制器方法而不是原始视图。
这是我的代码示例:
<button class="btn btn-primary" type="submit">@actionLabel</button>
<button asp-action="EditMethod2" class="btn btn-primary" type="submit">@actionLabel</button>
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> EditMethod2(myEditModel
{
ModelState.AddModelError(string.Empty, resultMessage);
if (ModelState.IsValid && TryValidateModel(
{
..// update model and perform something special to EditMethod2
return RedirectToAction(nameof(EditMyModel), new { id = id });
}
// oh dear we have errors we need to display to the user.
return View(nameof(EditMyModel), myEditModel);
返回的网址正确,模型错误从 MyModel / EditMyModel / 79706 更改为 / MyModel / EditMethod2
一切正常,但只是网址更改为我正在调用的操作的名称,而不是重定向的视图。我该如何妥善处理?我应该通过RedirectToAction将ModelState作为tempdata传递吗?
谢谢!
.NET core 1.1