使用POST在同一个控制器中重新路由到不同的方法

时间:2017-01-06 00:42:51

标签: c# asp.net-mvc

我在控制器中有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索引方法,但是在它离开该方法后,它返回到add并尝试使用搜索视图模型加载添加页面,并且显然会引发异常。

我有什么想法可以做这样的事情吗?

1 个答案:

答案 0 :(得分:0)

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

修复:明确指定视图名称:

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