C# 在asp.net mvc中发布两个或更多列表

C# 在asp.net mvc中发布两个或更多列表,c#,asp.net-mvc,asp.net-mvc-2,C#,Asp.net Mvc,Asp.net Mvc 2,我正在使用asp.net mvc 2,发现这种行为我无法理解。我有以下看法: m、 selectedDistrict,new SelectList(Model.districtList,“值”,“文本”))%> m、 selectedTown,new SelectList(Model.townList,“值”,“文本”))%> 控制器的方法如下: [HttpPost] 公共行动结果索引(BlackListGrabberModel postedModel) { BlackListGrabber

我正在使用asp.net mvc 2,发现这种行为我无法理解。
我有以下看法:


m、 selectedDistrict,new SelectList(Model.districtList,“值”,“文本”))%>
m、 selectedTown,new SelectList(Model.townList,“值”,“文本”))%>
控制器的方法如下:

[HttpPost]
公共行动结果索引(BlackListGrabberModel postedModel)
{
BlackListGrabberModel=新的BlackListGrabberModel(postedModel);
返回视图(模型);
}
最后但并非最不重要的是,我的模型:

BlackListGrabberModel(BlackListGrabberModel模型)
{
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);
}
}
我的想法是,然后我加载页面,我看到所有可能区域的列表。(我看到了-这是我的第一个下拉列表)当我选择区域时,单击“发布”按钮后,我看到所有区域的列表,它们从外部源加载,这部分工作正常。

所以我从列表中选择了地区,然后点击“发布”。在塔尔之后,我看到了位于选定地区的所有城镇的列表,但districtList消失了。然后我在控制器中跟踪它,发现postedModel.districtList属性为null。但是postedModel.areaList很好!这是否意味着我只能发布一个SelectList,或者我遗漏了什么?谁能帮我一下吗?
P.S.属性“selectedArea”、“selectedDistrict”、“selectedTown”按预期发布。

编辑。谢谢大家,我错过了一些重要的事情,而你给了我方向

我的问题似乎是区域列表。它是由默认构造函数填充的。我忘了这一点,然后我看到postedModel.areaList被填满了,我认为它是由asp.net mvc机制神奇地发布的,并抱怨所有其他列表都没有被填满,因为出现了一些奇怪的问题

对于每个请求,您必须在模型中重新填充列表属性。
邮件不会自动发回。只有选定的值被发回并绑定到模型中的属性(即,
selectedArea
被绑定,但不
areaList
)。

列表不应发布,只有html表单中选定元素的值将被绑定。如果需要保留列表值,可以尝试将它们放置在GET for Index中的TempData中,这将为下一个请求保留它们