2009-12-30 41 views
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"); 
    } 
} 

此方法適用於許多表和編輯工作的行動一樣好了同樣的觀點。但只有創建操作(使用空白模型)時,表單會一直調用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 })%>

現在我希望找出爲什麼以前的方法不會通過,因爲它爲其他視圖中的其他表。謝謝。

+0

在您看來被命名爲喜歡的表單字段id屬性「 record.FirstName「,」record.LastName「? – Anthony 2009-12-30 19:33:14

回答

0

默認情況下,您的表單將發佈到它所呈現的相同網址。既然你所謂的創建操作將回發到創建行動,而不是編輯,「COS觀點並不重要( - :

明確使用

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

非常感謝!:DI必須讓我的基礎知識拋光似乎。再次感謝:) – aredkid 2009-12-30 20:07:33