C#屬性默認值設置
關於在MVC中view中設置默認值,可以象如下設置:
1、關於VIEWMODEL的部分
如果是C# 6.0,網上資料查到說可以
public int X { get; set; } = 100
如果語法不支持,只能改回.net 2.0的寫法。
public class UserType
{
private int _UserType = 1;
public int UserTypeID
{
get
{
return this._UserType;
}
set
{
this._UserType = value;
}
}
}
需要糾正一下的是,在屬性上通過Attribute加[DefaultValue()]的方法是無效的。
//無效
[DefaultValue(1)]
public int UserTypeID { get; set; }
2、關於Controller部分
如果想在View中獲取設置的默認值,那么我們需要返回一個new type()。
public ActionResult Create()
{
ViewBag.MaxOrder = userTypeRepository.MaxOrder();
return View(new UserType());
}
這樣通過查看HTML源代碼,可以得到正確結果。
<input data-val="true" data-val-number="字段 UserTypeID 必須是一個數字。" data-val-required="UserTypeID 字段是必需的。" id="UserTypeID" name="UserTypeID" type="hidden" value="11" />
如果不new一個對象,是不能得到默認值的。
附注:
如果我們不對屬性設置默認值,MVC會幫我們自動填充默認值。如下:
//ViewModel部分
public int UserTypeID { get; set; }
//Controller部分
ViewBag.MaxOrder = userTypeRepository.MaxOrder();
return View(new UserType());
//查看HTML,MVC自動將int設為了0
<input data-val="true" data-val-number="字段 UserTypeID 必須是一個數字。" data-val-required="UserTypeID 字段是必需的。" id="UserTypeID" name="UserTypeID" type="hidden" value="0" />
所以我們實際可以這樣使用:
VIEWMODEL
public class UserType
{
public int UserTypeID { get; set; }
[Required(ErrorMessage = "請輸入用戶類型名稱")]
public string TypeName { get; set; }
[Required(ErrorMessage = "請輸入用戶類型排序")]
[Range(-100, 100, ErrorMessage = "請輸入正確的排序")]
public int TypeOrder { get; set; }
}
Controller
public ActionResult Create()
{
ViewBag.MaxOrder = userTypeRepository.MaxOrder();
return View();
}
Save
public void SaveData(UserType UserType)
{
met_UserType model = UserType.MapTo<met_UserType>();
if (UserType.UserTypeID == 0)
{
db.Entry<met_UserType>(model).State = EntityState.Added;
LogRepository.Add(string.Format("添加了用戶類型:{0}", UserType.TypeName));
}
else
{
db.Entry<met_UserType>(model).State = EntityState.Modified;
LogRepository.Add(string.Format("編輯了用戶類型:{0}", UserType.TypeName));
}
db.SaveChanges();
}

