我希望我能够把这个问题放在一起。 在局部视图中,我有一个指向创建操作的链接:
public ActionResult CreateProject()
{
return View("EditProject", new Project());
}
现在加载另一个视图,允许编辑传递给它的空白模型。但是当提交表单时,它应该发布到:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditProject(Project record)
{
if (ModelState.IsValid)
{
projectRepo.saveProject(record);
return View("Close");
}
else
{
return View("EditProject");
}
}
此方法适用于许多表,编辑操作也适用于同一视图。但是只有对于create动作(使用空白模型),表单会一直调用create动作,就像我跟调试器一样。
我的一位队友解决了这个问题:
[AcceptVerbs(HttpVerbs.Get)]
public ViewResult EditProject(int id)
{
Project project = null;
if (id == 0)
{
project = new Project();
}
else
{
project = (from p in projectRepo.Projects
where p.ProjectID == id
select p).First();
}
return View(project);
}
而在部分而不是<%= Html.ActionLink("Create New", "CreateProject")%>
中,有<%= Html.ActionLink("Create New", "CreateProject", new { id = 0 })%>
。
现在我希望找出为什么以前的方法不会通过,因为它适用于其他视图中的其他表。感谢。
答案 0 :(得分:0)
默认情况下,您的表单会发布到呈现的相同网址。由于您调用了create action,它将回发以创建操作,而不是编辑,'cos视图无关紧要( - :
明确使用
<%= using( Html.BeginForm("Action","Controller) ){ %>