我希望我能够很好地把这个问题放在一起。在部分视图中,我有一个指向创建操作的链接:
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");
}
}
此方法适用于许多表,编辑操作同样适用于同一个视图。但仅对于创建操作(使用空白模型),表单会不断调用创建操作,正如我使用调试器跟踪的那样。
我的一位队友已经解决了这个问题:
[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 })%>
.
现在我希望找出为什么以前的方法不会通过,因为它适用于其他视图中的其他表。谢谢。