如何在同一控制器内的另一个动作中返回主视图?

时间:2019-07-02 07:00:11

标签: c# asp.net model-view-controller error-handling view

所以我正在努力解决以下问题:

我有一个名为ApiBroker的主视图,在此视图中,有几种方法可以处理此视图中的输入。

例如:

    [HttpPost]
    public ActionResult AddApi(ApiRedirect model)
    {
        var data = model;
        try
        {
            List<ApiRedirect> list = dbProducts.ApiRedirects.ToList();
            int companyID = dbProducts.Companies.Where(x => x.CompanyName == model.Company.CompanyName).FirstOrDefault().CompanyID;
            int mappingID = dbProducts.MappingNames.Where(x => x.Name == model.MappingName.Name).FirstOrDefault().MappingID;
            ApiRedirect api = new ApiRedirect();
            api.ApiName = model.ApiName;
            api.CompanyID = companyID;
            api.ApiURL2 = model.ApiURL2;
            api.MappingID = mappingID;
            api.ResponseType = model.ResponseType;
            dbProducts.ApiRedirects.Add(api);
            dbProducts.SaveChanges();
            return View();
        }
        catch (Exception ex){
            throw ex;
        }
    }

此视图应返回主View(Index),但不要这样做,它试图返回不存在的视图“ AddApi”。错误:

enter image description here

使用上面的代码,数据被插入到我的数据库中,但返回500错误。

我尝试过的事情:

我尝试返回这样的View硬编码: return View(“〜/ Views / ApiBroker / Index.cshtml”); ,但这给我的WebGrid错误。

我也尝试过使用“ Return View(“ Index”)“,但这是我的WebGrid中的以下错误:

enter image description here

我也尝试过“ return View(” Index“,YourModel);” ,这给了我以下错误:

enter image description here

希望有人可以提供帮助!

2 个答案:

答案 0 :(得分:0)

如果它们属于同一View,则可以返回特定的Controller,如下所示:

return View("Index");

如果View属于不同的Controller,则只需指定View的名称及其文件夹名称,然后像这样调用它:

return View("../ControllerName/Index");

答案 1 :(得分:0)

UIView

 return RedirectToAction("YourAction");