1

我希望我能够很好地把这个问题放在一起。在部分视图中,我有一个指向创建操作的链接:

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 })%>.

现在我希望找出为什么以前的方法不会通过,因为它适用于其他视图中的其他表。谢谢。

4

1 回答 1

0

默认情况下,您的表单将发布到它呈现的相同 URL。由于您调用了创建操作,它会发回创建操作,而不是编辑,'cos 视图无关紧要(-:

明确使用

 <%= using( Html.BeginForm("Action","Controller) ){ %>
于 2009-12-30T19:40:09.313 回答