【发布时间】:2011-04-05 13:44:08
【问题描述】:
我正在尝试使用操作链接在单独的控制器中调用操作。
问题是 [HttpGet] 和 [HttpPost] 动作都被调用了,并且由于 post-method 返回调用动作的视图,所以什么都没有显示。
获取方法:
[HttpGet]
public ActionResult View(int id, int index)
{
var form = formService.GetForm(id);
var pageModel = new PageViewModel();
var page = form.Pages.ElementAt(index);
ModelCopier.CopyModel(page, pageModel);
ModelCopier.CopyModel(form, pageModel);
return View(pageModel);
}
发布方式
[HttpPost]
public ActionResult View(PageViewModel pageViewModel)
{
if (!ModelState.IsValid)
{
return RedirectToAction("Details", "Forms", new { id = pageViewModel.FormId });
}
var pageToEdit = pageService.GetPage(pageViewModel.PageId);
ModelCopier.CopyModel(pageViewModel, pageToEdit);
pageService.SavePage();
return RedirectToAction("Details", "Forms", new {id = pageViewModel.FormId});
}
如何从视图中调用它(从另一个控制器返回的视图中):
@Html.ActionLink("View", "View", "Pages", new { id = Model.FormId, index = item.Index-1 }, null)
我在这里做错了什么?我本质上希望它可以作为更新/编辑功能。返回的视图包含视图模型的简单表单。
【问题讨论】:
-
您能澄清一下您期望的行为吗?你是什么意思,这两个动作都被调用?浏览器应该只发出一个请求。