2012-11-05 25 views
1

美好的一天,如何將數據保存在兩個表中? (In Create)

我想知道如何將信息保存在創建中。

@model Request.Models.Chamados 
@model Request.Models.InteracoesChamados 
@{ 
    ViewBag.Title = "Create"; 
} 

如上面兩張表中所示,當然這只是不起作用。 請給我一個這樣的例子,因爲它讓我困惑。

注意:爲了清楚起見,我填寫表格並在保存時保存到2個表格。

環境: Windows 7中, Visual Studio 2010中, C#, MVC3 +剃刀實體框架

+1

請提供表名稱和列名稱,並說明您希望從UI推送到數據庫表中的哪個數據。 –

+0

什麼是你的數據庫? –

回答

0

好像有一些事情在這裏,但對於初學者來說,你只能申報按次一個模型。

您可以創建一個ViewModel,它具有上述兩種功能,例如,

public class ChamodosViewModel{ 
    public Chamados Chamados {get;set;} 
    public InteracoesChamados InteracoesChamados {get;set;} 
} 

,然後在您的視圖

@model ChamodosViewModel 
+0

謝謝,但我該如何保存?我必須創建另一個控制器,或者我可以使用ChamadoController嗎? –

+0

您可以使用相同的控制器。您的操作將接受ChamodosViewModel作爲參數。視圖本身需要有一個Html.EditorFor(模型)或類似的。在控制器的操作中,你可以保存這個。如果不知道你使用的是什麼數據庫,我不能說更多。 – dove

+0

感謝您的幫助,我設法解決。 –

0

不要使用域模型視圖。創建一個新的POCO類是特定於您的視圖。一般來說,我們稱之爲ViewModel

public class ChamodoVM 
{ 
    [Required] 
    public string ChamdoName { set;get;} 
    [Required] 
    public string InteracoName { set;get;} 

    //other properties here as needed 
} 

現在YOUT GET動作創建該類的一個對象,並傳遞給View方法。

public ActionResult Create() 
{ 
    var vm=new ChamodoVM(); 
    return View(vm); 
} 

將您的視圖強制鍵入ViewModel類。

@model ChamodoVM 
@using(Html.BeginForm()) 
{ 
    @Html.LabelFor(x=>x.ChamodoName) 
    @Html.TextBoxFor(x=>x.ChamodoName) 

    @Html.LabelFor(x=>x.InteracoName) 
    @Html.TextBoxFor(x=>x.InteracoName) 

    <input type="submit" /> 
} 

當用戶提交表單時,請從視圖模型中讀取值並將其分配給您的域模式的對象並保存。感謝MVC模型綁定。 :)

[HttpPost] 
public ActionResult Create(ChamodoVM model) 
{ 
    if(ModelState.IsValid) 
    { 
    var domainModel=new Chamodo(); 
    domainModel.Name=model.ChamodoName; 
    domainModel.Interaco=new Interaco(); 
    domainModel.Interaco.Name=model.InteracoName; 

    yourRepositary.SaveClient(domainModel); 
    //If saved successfully, Redirect to another view (PRG pattern) 
    return RedirectToAction("ChamodoSaved"); 
    } 
    return View(model);  
} 
相關問題