2010-11-17 100 views
1

我是ASP.Net MVC的新手,對於主細節輸入表單有疑問。主要細節ASP.Net MVC

我的數據庫有一個與外科醫生,免疫和父表的外鍵關係的子表。我使用Linq to SQL來創建我的模型。

我已經爲Child創建了控制器和視圖。用戶會立即提交表格並提交所有內容 - 兒童,他們的醫生信息,一個或多個家長以及一個或多個疫苗接種。

我不知道如何解決這個問題。我是否需要接種疫苗,家長等控制器?

我的預MVC應用程序只需抓住一切從Web表單和全部的

回答

0

我通常有一個控制器,支持多種視圖(添加,編輯,刪除等)。我從我的數據庫中讀取到一個模型,該模型包含您在視圖中需要的每條數據的字段。然後將模型傳遞給視圖,以便它可以呈現它。

表單提交後,您將從它獲取一個模型作爲控制器的參數。然後根據需要更新數據庫。

這是一些代碼。我沒有嘗試編譯它,所以你的里程可能會有所不同。

public class ParentModel 
    { 
     // Parent fields 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 

     IList<ChildModel> Children { get; set; } 
    } 

    public class ChildModel 
    { 
     // Child fields 
     public int Age { get; set; } 
    } 


    public ActionResult MyAction() 
    { 
     // Grab a model with the children property filled out 
     ParentModel myModel = GetFromDatabase(); 

     return View("MyView", myModel); 
    } 

的視圖(縮寫):

<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<ParentModel>" %> 

. 
. 
. 


<% using (Html.BeginForm("MyAction", "MyController", FormMethod.Post)) %> 
<% {%> 
     <%= Html.ValidationSummary(true) %> 

     <table> 
      <tr valign="top"> 
       <td> 
        <%:Html.LabelFor(a => a.FirstName)%>: 
       </td> 
       <td> 
        <%:Html.EditorFor(a => a.FirstName)%> 
        <%:Html.ValidationMessageFor(a => a.FirstName)%> 
       </td> 
      </tr> 
      <tr valign="top"> 
       <td> 
        <%:Html.LabelFor(a => a.LastName)%>: 
       </td> 
       <td> 
        <%:Html.EditorFor(a => a.LastName)%> 
        <%:Html.ValidationMessageFor(a => a.LastName)%> 
       </td> 
      </tr> 
     </table> 

     . 
     . 
     . 

    <%} %> 
+0

謝謝你那麼你是否建議如果一個模型暴露了孩子和父母名單,疫苗列表等,該視圖會自動正確地渲染。我認爲我沒有正確理解你。 – 2010-11-17 20:55:16

+0

您需要創建一個具有合適的Html助手的視圖。看我上面的例子。 – rboarman 2010-11-17 21:10:05

0

你只需要在主控制器。對於編輯列表的竅門認爲(子對象)中this haacked post

解釋基本上你需要遵循這一慣例和MVC將填補子對象的數組中的POST方法:

<% for (int i = 0; i < 3; i++) { %> 

    <%: Html.TextBoxFor(m => m[i].Title) %> 
    <%: Html.TextBoxFor(m => m[i].Author) %> 
    <%: Html.TextBoxFor(m => m[i].DatePublished) %> 

<% } %>