从部分不提交表单数据调用的视图

时间:2009-12-30 19:04:40

标签: asp.net-mvc views partial-views

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

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

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

1 个答案:

答案 0 :(得分:0)

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

明确使用

 <%= using( Html.BeginForm("Action","Controller) ){ %>