首页新闻找找看学习计划

mvc视图传递List对象问题

0
悬赏园豆:10 [待解决问题]

视图用来设置个人信息,需要导师选择教课区域。如下代码:

//获取所有授课区域
int cityID = Int32.Parse(Session["TutorJob_City"].ToString());
DistrictR districtR = new DistrictR(GetRequest());
var districts = districtR.Find(m => m.CityID == cityID);
if (districts != null)
{
    model.Districts = districts;
}
else
{
      ModelState.AddModelError("", "获取授课区域失败。" );
}

视图部分如下:

<div class="editor-field">
      @foreach(var district in Model.Districts)
      {
            <input id="@district.DistrictID" class="ckbDistrict" name="@district.DistrictID" type="checkbox" value="@district.DistrictID" />
                <span style="display:inline-block;width:130px"><label for="@district.DistrictID">@district.Name</label></span>
      }
</div>

页面能正确显示去区域信息。提交数据时,如果在control中验证失败,ModelState.AddModelError("","error")  return view(model)时,model中的Districts就成null了,返回视图显示教课区域时就报异常了。可在return view(model)之前再执行一次District的查询(就像顶部controler中那样)又觉得有代码冗余,太麻烦。有没有好点的解决方案啊?求指教!!

pkwblack的主页 pkwblack | 菜鸟二级 | 园豆:234
提问于:2015-05-27 14:39
< >
分享
所有回答(3)
0

那就再查一次吧。这会没找到好的方法,那就先实现功能正常,冗余之类的先不管,万一一会灵光一现就有方法了

黑峰 | 园豆:544 (小虾三级) | 2015-05-27 15:24

哈哈 我就是这么做的,先做了个标记,等着你们这些大神们支招呢。。

支持(0) 反对(0) pkwblack | 园豆:234 (菜鸟二级) | 2015-05-27 15:35
0

首先前台View里面一定要做非空验证啊,其次是在控制器里发现验证失败,为什么还要去找数据啊,直接返回啦

醉心 | 园豆:99 (初学一级) | 2015-05-28 10:48
0

给你说两种解决方法吧!

1.在视图中的@foreach(){}前加一层判断

  @if(Model.Districts==null){@foreach(){}}

2.在控制器实例化一下

  if (districts != null) { model.Districts = districts; }

  else { model.Districts = new DistrictR(); ModelState.AddModelError("", "获取授课区域失败。" ); }

at小怪兽 | 园豆:760 (小虾三级) | 2015-07-10 14:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册