我试图在一个单独的控制器中使用一个actionlink调用一个动作。从单独的控制器(ASP.NET MVC3)调用
问题是[HttpGet]和[HttpPost]动作被调用,并且由于post-method返回调用动作的视图,因此不会显示任何内容。
Get方法:
[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);
}
POST方法
[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)
我在这里做错了什么?我基本上希望它能够作为更新/编辑功能。返回的视图包含视图模型的简单形式。
你能否澄清你期望的行为?你是什么意思,这两个行动被称为?浏览器应该只发出一个请求。 – marcind 2011-04-05 14:02:20