我正在尝试使用actionlink在单独的控制器中调用操作。
问题是[HttpGet]和[HttpPost]动作都被调用,并且由于post方法返回调用动作的视图,因此不会显示任何内容。
获取方法:
[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)
我在这里做错了什么?我基本上希望它作为更新/编辑功能。返回的视图包含viewmodel的简单表单。
答案 0 :(得分:0)
我认为您无法使用操作链接 - 请参阅此question
选项是使用jQuery发布数据或交换到简单表单并提交
答案 1 :(得分:0)
操作链接发出GET请求。您将必须实现一些捕获url和参数的JavaScript函数,并使用POST方法动态创建和提交新表单,或执行Ajax POST。您可以编写自己的HTML Helper来包装此功能,但单击<a>
标记(由Html.ActionLink
生成的内容)的默认功能将发出GET请求。