3

MVC 모델에 대한 몇 가지 개념적 기본을 이해하지 못하고 있으며 도움이되는 설명이 필요합니다. 내 MVC 4 웹 응용 프로그램에서MVC 모델 인스턴스화

, 나는 DropDownList로에 대한 IEnumerable을 <SelectListItem>를 구축 뷰 모델을 가지고 있고, 내가보기에이 작업을 수행 할 경우 :

@model MyApp.Models.MyModel 

@Html.DropDownListFor(x => x.MyThingID, Model.MySelectList, "Select...") 

나는 "개체 참조를하지 얻을 개체의 인스턴스로 설정 "오류가 발생했습니다.

그러나 나는이 작업을 수행 할 경우 :

그것은 작동
@model MyApp.Models.MyModel 

@{ var myModel = new MyApp.Models.MyModel(); } 
@Html.DropDownListFor(x => x.MyThingID, myModel.MySelectList, "Select...") 

. 그러나이 명시적인 인스턴스화는 내게는 끔찍한 잘못을 느끼고 있으며 컨트롤러에서 아무 것도하지 않아도되는지 모르겠다. 컨트롤러에서이 작업을 수행하는 것이 맨 처음의 "반환 View()"ActionResult입니다.

나는 많은 좋은 지침을 찾을 수 없으며 궁극적으로 계단식 드롭 다운을 구현하려고하므로이 기능이 어떻게 작동하는지 더 잘 이해할 필요가 있습니다. 도움을받을 시간과 성향이 있다면 크게 감사하겠습니다.

답변

2

보기에 모델을 전달해야합니다. 당신은 컨트롤러 코드에서이 작업을 수행 할 수 있습니다

return View(myModel); 

대신 yourmodel가 대해서 typeof MyApp.Models.MyModel입니다

return View(); // without the model! 

의. 그냥 시작하고 통과하십시오.

public ActionResult YourAction() 
{ 
    var myModel = new MyApp.Models.MyModel(); 
    // do other actions or put more data inside myModel 
    return View(myModel); 
} 
+0

물론, 그것은 훨씬 더 합리적입니다. 고맙습니다! – theog