asp.net mvc 2를 사용하고 있는데 이해할 수없는이 동작을 발견했습니다.
내가 다음보기가이 같은asp.net mvc에 두 개 이상의 목록 게시
<% using (Html.BeginForm("Index", "BlackListGrabber", FormMethod.Post))
{
<%= Html.DropDownListFor(m => m.selectedArea, new SelectList(Model.areaList, "value", "text")) %>
<% if (Model.districtList != null) { %>
<%= Html.DropDownListFor(m => m.selectedDistrict, new SelectList(Model.districtList, "value", "text")) %>
<% } %>
<% if (Model.townList!= null) { %>
<%= Html.DropDownListFor(m => m.selectedTown, new SelectList(Model.townList, "value", "text")) %>
<% } %>
<input type="submit" value="post" />
<% } %>
와 컨트롤러의 방법
[HttpPost]
public ActionResult Index(BlackListGrabberModel postedModel)
{
BlackListGrabberModel model = new BlackListGrabberModel(postedModel);
return View(model);
}
는 그리고, 적어도 마지막하지만, 내 모델 :
BlackListGrabberModel(BlackListGrabberModel model)
{
if (string.IsNullOrEmpty(model.selectedArea))
{
areaList = GetRegions();
}
else if (string.IsNullOrEmpty(model.selectedDistrict))
{
areaList = model.areaList;
districtList = GetRegions(model.selectedArea);
}
else if (string.IsNullOrEmpty(model.selectedTown))
{
areaList = model.areaList;
districtList = model.districList;
districtList = GetRegions(model.selectedDistrict);
}
}
아이디어는 내가로드이다 페이지, 나는 모든 가능한 지역의 목록을 본다. (그리고 나는 그것을 본다 - 나의 첫번째 dropdownlistfor이다.) 내가 "post"버튼을 클릭 한 후에 지역을 선택하면, 나는 모든 지구 목록을보고, 부품이 잘 작동합니다.
그래서 목록에서 지구를 선택하고 "게시"를 클릭하십시오. thar 후에 선택된 지구에있는 모든 마을의 목록을 볼 수 있지만 districtList가 사라집니다. 그런 다음 내 컨트롤러에서 추적했는데 postsModel.districtList 속성이 null이라는 것을 알았습니다. 그러나 postedModel.areaList는 좋습니다! 그게 하나의 SelectList를 게시 할 수 있다는 뜻입니까, 아니면 뭔가 빠졌는가요? 누군가 제게 어떤 도움을 주실 수 있습니까?
P. 속성 "selectedArea", "selectedDistrict", "selectedTown"이 예상대로 게시됩니다.
EDIT. 모두 덕분에, 나는 중요한 것들을 놓쳤고, 당신은 그들에게 나에게 지시를주었습니다.
내 문제가 areaList 인 것으로 보입니다. 기본 생성자로 채워졌습니다. 나는 그걸 잊었다. 그래서 내가 본 것을 보았다 .Model.areaList가 가득 찼다. 나는 그것이 asp.net MVC 메커니즘에 의해 마술로 게시되었다고 생각하고, 다른리스트는 이상한 glithces 때문에 채워지지 않는다고 불평했다.