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");
    }
}

この方法は多くのテーブルで機能し、編集アクションは同じビューでも同様に機能します。ただし、作成アクション (空のモデルを使用) の場合のみ、デバッガーでトレースしたように、フォームは作成アクションを呼び出し続けます。

私のチーム メイトの 1 人がこの問題を解決しました。

[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 に答える