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();
        }
复制代码

 

posted on   静以修身俭以养德  阅读(27417)  评论(0编辑  收藏  举报

编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
历史上的今天:
2012-09-18 (转载)你真的了解分层架构吗?——写给被PetShop"毒害"的朋友们

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示