2015-06-04 39 views
0

好日子!MVC Issue:註冊表格,多表

只是在我的系統VS2013,SQL Server 2012管理服務器的一點背景。

所以我仍然在研究我的MVC項目,而目前我遇到了另一個問題。

以前我有一個包含個人信息(姓名,出生日期,地址等)員工的表,現在我加入另一個表包含與工作相關的信息(例如,職務,聘用日期,等等等等)

我已經創建了兩個模型和兩個視圖,但因爲我的用戶想要以單一形式創建一個新員工。我需要將我的工作信息文本字段添加到我的個人信息視圖創建頁面中。

我已經試驗元組

"@model Tuple<blah.Models.PersonalInfo, blah.Models.WorkInfo>;" 

因此到目前爲止我能夠產生的視場,但我想問一下,我怎麼能發送已進入由用戶返回該信息到表中添加新員工。

(即說,用戶點擊「創建」,形式是能夠封裝數據進入了他們的單獨的「模型」,並詢問我的數據庫添加新的傢伙)

+3

創建一個包含想要編輯的所有屬性的視圖模型,並將其發回,然後根據視圖模型屬性初始化2個數據模型。 –

+0

我如何初始化我的兩個數據模型?請你指點一下嗎?提前感謝 – poosiang

+0

在POST方法中,'var personal = new PersonalInfo(){name = viewModel.Name,DOB = viewModel.DOB,... etc}'同上'WorkInfo',然後將'PersonalInfo'和' WorkInfo'模型 –

回答

1

我建議創建一個視圖模型而不是傳遞一個元組。

public class EmployeesViewModel 
{ 
    public PersonalInfo PersonalInfo { get ;set; } 
    public WorkInfo WorkInfo { get; set; } 
} 

然後在控制器中建立ViewModel並將其傳遞給View。

public ActionResult WorkAction() 
{ 
    var personalInfo = new PersonalInfo(); 
    var workInfo = new WorkInfo(); 

    var viewModel = new EmployeesViewModel 
    { 
     viewModel.PersonalInfo = personalInfo, 
     viewModel.WorkInfo = workInfo 
    }; 
    return View(viewModel); 
} 

並在視圖使用以下模型:

@model EmployeesViewModel 

當您保存視圖模型將被傳遞給控制器​​。

正如Stephen Muecke的評論所述,您可以根據視圖模型屬性初始化您的2個數據模型。