zoukankan      html  css  js  c++  java
  • 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();
            }

    复制代码

  • 相关阅读:
    Jenkins持续集成邮件发送
    基于appium快速实现H5自动化测试
    Linux常用命令学习一
    BZOJ4372烁烁的游戏——动态点分治+线段树(点分树套线段树)
    BZOJ3730震波——动态点分治+线段树(点分树套线段树)
    BZOJ1014[JSOI2008]火星人——非旋转treap+二分答案+hash
    BZOJ1299[LLH邀请赛]巧克力棒——Nim游戏+搜索
    BZOJ1115[POI2009]石子游戏——阶梯Nim游戏
    BZOJ3110[Zjoi2013]K大数查询——权值线段树套线段树
    BZOJ5343[Ctsc2018]混合果汁——主席树+二分答案
  • 原文地址:https://www.cnblogs.com/grj001/p/12224613.html
Copyright © 2011-2022 走看看