2012-07-13 53 views
0

我需要一個帶有一些動態輸入字段的部分視圖。爲此,我的模型包含一個「object」類型的對象,然後在我的控制器中創建一個新的模型,其中包含相關對象類型「myobject」。如何將視圖中的動態對象傳遞給控制器​​

所有在PartialViewResult中正常工作,但在表單提交後,對象不包含我的對象類型「myobject」。

如何在表單中發送提交正確的對象?

控制器:

public PartialViewResult mypage() 
{ 
myModel model = new myModel(); 
myObject obj = new myObject(); 
model.myobject = obj; 

return PartialView(「mypage」,model); 
} 

public PartialViewResult Save (myModel model) 
{ 
    // Here I need model.myobject!!! 
} 

型號:

public class myModel 
{ 
    public long id {get;set;} 
    public object myobject {get;set;} 
} 

public myObject 
{ 
    public string myname {get;set;} 
} 

查看:

@model myModel 
// form (code omitted) 
@Html.EditorFor(model => model.myobject) 

<button type="submit">Save</button> 

模板

@model myObject 

@Html.EditorFor(model => model.myname) 

回答

1

對象本身不會有任何屬性 - 您需要將其轉換爲包含所需屬性的類型。

如果你不能這樣做,因爲你想重複使用不同的myobject類型的視圖,那麼你需要使用一個接口和一些通常命名的屬性。

另一種方法是使用屬性包即詞典並在視圖中通過鍵名引用值。

然後你可以有你的模型中定義的屬性:

public Dictionary<string, string> MyItems {get;set;} 

並在頁面中引用它們:

model.MyItems["keyName"] 
+0

我試着投,但我得到這個錯誤:「無法轉換類型‘System.Object的’對象鍵入‘MyProjext.Models.myObject’。」 – User907863 2012-07-13 13:00:24

+0

你在哪裏試圖施展它? - 你能修改你的代碼來顯示你已經嘗試過的嗎? – BonyT 2012-07-13 17:20:58

1

你必須把對象返回。 這是類似的東西:

MyObject myObject = (MyObject) objectReturned; 
+0

我試圖施放,但我得到這個錯誤:「無法強制'System.Object'類型的對象鍵入'MyProjext.Models.myObject'。」 – User907863 2012-07-13 12:58:59

相關問題