2012-07-13 6 views
0

일부 동적 입력 필드가있는 부분보기가 필요합니다. 이렇게하려면 내 모델에 "개체"유형의 개체가 포함되어 있고 내 컨트롤러에는 관련 개체 유형이 "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

I 캐스팅하려했지만이 오류 얻을 : ". 'MyProjext.Models.myObject'를 입력 유형 '으로 System.Object'의 개체를 캐스팅 할 수 없습니다"를 – User907863

+0

어디에서 캐스팅을 시도 했습니까? - 시도한 것을 보여주기 위해 코드를 수정할 수 있습니까? – BonyT

1

당신은 객체가 반환 캐스팅해야합니다. 이 같은 뭔가 :

MyObject myObject = (MyObject) objectReturned; 
+0

캐스팅을 시도했지만이 오류가 발생합니다 : " 'System.Object'형식의 개체를 'MyProjext.Models.myObject'형식으로 캐스팅 할 수 없습니다." – User907863

관련 문제