• 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();
            }
  • 相关阅读:
    RIA Animation test.
    深入浅出REST
    HTTP header中的 Cachecontrol
    Silverlight操纵html元素
    Comparing Azure storage and SQL Data Services
    SharePoint 2010 集成Window Live 认证遇到的问题 part 2
    SharePoint2010 此工作簿未存储在 Excel Services 应用程序 中受信任的位置,因此无法打开。
    SharePoint2010 使用Designer开发工作流 如何引用其他列表的查阅项
    SharePoint 2010 item级的权限控制
    Infopath 2010 如何设计虚线底框应用于合同中的输入框
  • 原文地址:https://www.cnblogs.com/superfeeling/p/7544299.html
Copyright © 2020-2023  润新知