C#属性默认值设置

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();
        }

复制代码

原文地址:https://www.cnblogs.com/grj001/p/12224614.html