如果模型状态无效,则返回部分视图

问题描述 投票:0回答:1

我有一个带有注册表单的滑块,我将表单创建为部分 View 。 这是创建注册表单的方法: 获取方式:

       public IActionResult CorporationRegisterRequest()
   {

       CorporationRequestViewModel corporationViewModel = new CorporationRequestViewModel();
       return PartialView("CorporationRegisterPartial", corporationViewModel);
   }

发帖方法

    [HttpPost()]
    [Route("CorporationRegister")]
    public async Task<IActionResult> CorporationRegisterRequest(CorporationRequestViewModel corporationRequestViewModel)
    {
        if (ModelState.IsValid)
        {
            var result = await _userService.CreateCorporationRequest(corporationRequestViewModel);


            switch (result)
            {
                case CorporationRequestResult.Failed:
                    TempData[ErrorMessage] = "NotFound";
                    break;

                case CorporationRequestResult.UserHasNotRequestWithThisNumber:
                    TempData[WarningMessage] = "User Has no Request with this Number";
                    break;

                case CorporationRequestResult.Successfully:
                    TempData[SuccessMessage] = "Your Request send, Our Staff Calling You As soon As Possible";
                    return RedirectToAction("Index", "Home");
            }
        }


        return RedirectToAction("CorporationRegisterRequest", PartialView("CorporationRegisterPartial", corporationRequestViewModel));
    }`

如果模型有效,则一切正常并添加到数据库。但是如果模型状态无效,它必须返回到索引页面,索引包括该部分 我怎样才能恢复到部分?我的方法最后一次返回时遇到问题,如果模型无效,则同时显示“corporationRequestViewModel”和索引

asp.net return partial-views partial
1个回答
0
投票

一般来说,您可以使用 PartialView 结果返回它(就像在上面的 GET 方法中所做的那样)+ 将绑定的模型实例(来自操作方法参数)作为参数传递(以保留/可视化模型状态错误):

public async Task<IActionResult> CorporationRegisterRequest(CorporationRequestViewModel corporationRequestViewModel) {
    if (ModelState.IsValid) {
        ...
    }

    //return RedirectToAction("CorporationRegisterRequest", PartialView("CorporationRegisterPartial", corporationRequestViewModel));
    return PartialView("CorporationRegisterPartial", corporationRequestViewModel);
}

但是,如果您执行异步 POST 请求,它似乎是有效的。否则,您可能需要返回整个 View 结果并传输模型 Model 实例,而不是创建新实例,例如使用 TempData。

© www.soinside.com 2019 - 2024. All rights reserved.