ViewModel返回默认值0

时间:2016-01-13 02:00:42

标签: c# asp.net-mvc viewmodel

我正在研究房地产管理信息系统。我有这个ViewModel:

public class UnitViewModel
{

    public IEnumerable<HouseModel> HouseModels { get; set; }
    public int SelectedModelID { get; set; }

    public int Block { get; set; }
    public int FromLot { get; set; }
    public int ToLot { get; set; }

    public double LotArea { get; set; }
    public double FloorArea { get; set; }

    public IEnumerable<Site> Sites { get; set; }
    public int SelectedSiteID { get; set; }

    public double Price { get; set; }

}

我在这个控制器中使用它:

 public ActionResult Create()
    {
        UnitViewModel unitVM = new UnitViewModel();
        unitVM.HouseModels = db.HouseModels.ToList();
        unitVM.Sites = db.Sites.ToList();
        return View(unitVM);
    }

然而,当我运行应用程序时,它会给我这个输出。

enter image description here

有没有办法删除这些默认值?谢谢你的帮助。

1 个答案:

答案 0 :(得分:4)

将Block属性类型从Int更改为 Nullable int

public class UnitViewModel
{    
    public IEnumerable<HouseModel> HouseModels { get; set; }
    public int SelectedModelID { get; set; }

    public int? Block { get; set; }

    // Other properties goes here
}

由于Block是一个可以为空的int,因此在访问它并调用任何方法之前进行空检查总是一个好主意。

[Httppost]
public ActionResult Create(UnitViewModel model)
{
  if(model.Block!=null)
  {
     int blockValue= model.Block.Value;
     // do something now
  }
  // to do : Do something and return something
}

您可以在此可空属性上使用数据注释进行验证。

public class UnitViewModel
{    
    [Required]
    public int? Block { get; set; }

    // Other properties goes here
}