2012-04-03 2 views
0

내 게시물에 같은보기에서 내 뷰 모델을 다시 전달하는 방법이 있습니다httppost로 다시 전달할 일반 객체/클래스 유형?

[HttpPost] 
public ActionResult DoStuff(daViewModel model) 
{ 
    string whatever = model.Name; 
    int id = model.Id; 
    return View(); 
} 

객체의 어떤 종류의가 (내 뷰 모델은 httppost 유형에 싸여 이후에 다시 내 컨트롤러 메서드에 전달 도착 클래스의) 같은 내가 전달할 수있는 일반/유형이 있습니까? 당신은 FormCollection 개체를 전달할 수

[HttpPost] 
public ActionResult DownloadFiles(object model) 
{ 
    // cast my daViewModel from object model as passed in??? 
    string whatever = model.Name; 
    int id = model.Id; 
    return View(); 
} 
+0

여기서 질문하지는 않지만 클래스의 데이터 유형이 사용자에 의해 정의되면 ModelBinder는 양식 값 또는 쿼리 문자열의 데이터를 모델 클래스에 바인딩합니다. 특정 모델로 작업 할 수 있도록 자신 만의 모델 바인더 클래스를 만들 수 있습니다. – hardywang

답변

3

가 :

[HttpPost] 
public ActionResult DownloadFiles(FormCollection collection) 
{ 
    // if you want to extract properties directly: 
    string whatever = collection["Name"]; 
    int id = int.Parse(collection["Id"]); 

    // if you want to convert the collection to your model: 
    SomeModel model; 
    TryUpdateModel(model, collection); 

    return View(); 
} 

목 e TryUpdateModel 메서드는 부울을 반환합니다. 모델의 갱신에 성공하면 (자) true를 돌려 주어, 그렇지 않은 경우는 false를 돌려줍니다. 전달 된 양식 값은 모델의 특성 이름과 일치해야합니다.

return View()으로 전화 할 때 어떤 모델이 다시 전달되는지 묻는다면, 그 대답은 말할 필요가없는 한 아무 것도 아닙니다.

return View(model); 

당신은보기보고 기대하는 유형을 반환해야한다 : 모델에 걸리는 View() 방법에 과부하가있다. 보기를 Foo 모델로 정의한 경우 컨트롤러에 Foo을 넣는 것이 좋습니다.

+0

Thx! 내 뷰 모델에 복잡한 개체 컬렉션이 있으면 어떻게됩니까? IEnumerable myObects입니다. ? 그 작업을 [ "myObjects"]에 매핑하고 그에 따라 양식 모음에서 해당 모음을 가져올 수 있습니까? 또한 TryUpdateModel에 매핑됩니까? – Mariah

+0

@Mariah 양식 데이터의 이름이 정확하면 열거 형 (또는 목록/배열 등)을 올바르게 업데이트 할 수 있습니다. – Dismissile