zoukankan      html  css  js  c++  java
  • 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();
            }
  • 相关阅读:
    转:用两个栈实现一个队列——我作为面试官的小结
    Android屏幕重力感应旋转
    简单的单例模板,继承使用即可
    cocos2dx windows 音量设置无效解决办法
    lua lu
    OpenGL ES API with no current context
    git更新某个目录
    sh ndk-build clean Cannot run program "sh": Launching failed Error: Program "sh" not found in PATH PATH=......
    sublime Text快捷键
    转:解决windows下eclipse中android项目关联android library project失败问题
  • 原文地址:https://www.cnblogs.com/superfeeling/p/7544299.html
Copyright © 2011-2022 走看看