使用开机自检重新路由到同一控制器中的不同方法



我在控制器中有 2 个索引方法,一个用于最初加载页面,一个用于接受表单提交并根据提交的数据重新加载同一视图。

    [HttpGet]
    public ActionResult Index()
    {
        loads page with viewmodel containing a searchobject that is submitted with a form on the page
    }
    [ValidateAntiForgeryToken]
    [HttpPost]
    public ActionResult Index(SearchModel Model)
    {
        takes form submit and reloads page based on search results
        return View(Model);
    }

我在同一控制器中还有一个添加视图/方法。我想做的是当 add 函数成功时,我想调用索引的 POST 版本并传递给它刚刚添加的项目的 id。

这是我到目前为止所拥有的:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Add(AddModel addmodel)
    {
        do stuff
        var status = client.Add(dto);
        if (!status)
        {
            return View(AddModel);
        }
        SearchModel = new SearchModel();
        SearchModel.ID= addmodel.ID;
        return Index(search, null);
    }               

它进入 POST 索引方法,但在离开该方法后,它会返回到添加并尝试使用搜索视图模型加载添加页面,显然会引发异常。

知道我有什么选择来做这样的事情吗?

默认情况下,View(Model)使用当前操作的名称(在您的情况下路由到 - Add,而不是当前方法名称 - Index )。

修复:显式指定视图名称:

public ActionResult Index(SearchModel Model)
{
    takes form submit and reloads page based on search results
    return View("Index", Model);
}

最新更新