【问题标题】:View Called from Partial Not Submitting Form Data从部分未提交表单数据调用的视图
【发布时间】:2009-12-31 03:40:09
【问题描述】:

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

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

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

【问题讨论】:

  • 在您看来,表单字段的 id 属性是否命名为“record.FirstName”、“record.LastName”?

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


【解决方案1】:

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

明确使用

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

【讨论】:

  • 非常感谢! :D 看来,我必须完善我的基础知识。再次感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多