2012-06-28 68 views
0

我已經包含其他模型,其還包含其他模型類型列表例如像下面的列表的模型:MVC3:綁定模型來動態創建HTML元素

public class Report 
{ 
    public string ReportId {get; set;} 
    public List<ReportOutput> ReportOutputs; 
} 

//output types = PDf, csv, txt, etc. 
public class ReportOutput 
{ 
    public int OutputType {get; set;} 
    public List<DeliveryMethod> DeliveryMethods; 
} 

//delivery methods = email, ftp, etc. 
public class DeliveryMethod 
{ 
    public string MethodName {get; set;} 
} 

我有一種觀點認爲,動態使用jQuery創建基於這些對象內容的元素。該視圖允許用戶選中複選框來添加或刪除不同的輸出,並在每個輸出中使用不同的傳送方法。我需要知道如何將信息返回給控制器以加載到模型中以發送回數據庫。從閱讀的角度來看,我似乎只需要在控制器中實例化一個模型,然後爲視圖中的每個元素指定一個與模型屬性相對應的名稱,然後調用控制器函數來檢索所有數據並繼續保存新填充的模型,但我嘗試創建這個控制器功能失敗了。

所以我的問題是,我將如何創建控制器功能,我只需要在html元素上使用相應的名稱以允許基於視圖上的信息創建模型?

+0

是的,我已經沿着這條路走下去了,當你創建它們時,你需要適當地命名這些元素,以便它們可以在回發時適當地進行數據綁定。 –

回答

1

如果您按照以下模式生成名稱的表單字段,默認的模型聯編程序將負責您自己必須完成模型綁定過程的其他工作(艱鉅任務!)。

ReportId,

ReportOutputs [0] .OutputType,

ReportOutputs [0] .DeliveryMethods [0] .MethodName,

ReportOutputs [0] .DeliveryMethods [1] .MethodName,

ReportOutputs [1] .OutputType,

ReportOutputs [1] .DeliveryMethods [0] .MethodName,

+0

這看起來像我需要做的,我唯一的問題是不知道編寫控制器方法實際接受值的正確方法。我會假設它會是這樣的:public ActionResult SaveReport(){}但這需要一個返回語句,我不知道要返回什麼,也使它保持在同一視圖。 – user1489055

1

您應該檢出涵蓋這些主題的following article,並解釋默認模型聯編程序預期的輸入字段的命名約定,以便在提交表單時可以將它們綁定回去。