我在控制器中有 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);
}