关于在MVC中view中设置默认值,可以象如下设置:

1、关于VIEWMODEL的部分

如果是C#  6.0,网上资料查到说可以

  1. public int X { get; set; } =

如果语法不支持,只能改回.net 2.0的写法。

  1. public class UserType
  2. {
  3. private int _UserType = 1;
  4. public int UserTypeID
  5. {
  6. get
  7. {
  8. return this._UserType;
  9. }
  10. set
  11. {
  12. this._UserType = value;
  13. }
  14. }
  15. }

需要纠正一下的是,在属性上通过Attribute加[DefaultValue()]的方法是无效的。

  1. //无效
    [DefaultValue()]
  2. public int UserTypeID { get; set; }

2、关于Controller部分

如果想在View中获取设置的默认值,那么我们需要返回一个new type()。

  1. public ActionResult Create()
  2. {
  3. ViewBag.MaxOrder = userTypeRepository.MaxOrder();
  4. return View(new UserType());
  5. }

这样通过查看HTML源代码,可以得到正确结果。

  1. <input data-val="true" data-val-number="字段 UserTypeID 必须是一个数字。" data-val-required="UserTypeID 字段是必需的。" id="UserTypeID" name="UserTypeID" type="hidden" value="11" />

如果不new一个对象,是不能得到默认值的。

附注:

如果我们不对属性设置默认值,MVC会帮我们自动填充默认值。如下:

  1. //ViewModel部分
  2. public int UserTypeID { get; set; }
  3.  
  4. //Controller部分
  5. ViewBag.MaxOrder = userTypeRepository.MaxOrder();
  6. return View(new UserType());
  7.  
  8. //查看HTML,MVC自动将int设为了0
  9. <input data-val="true" data-val-number="字段 UserTypeID 必须是一个数字。" data-val-required="UserTypeID 字段是必需的。" id="UserTypeID" name="UserTypeID" type="hidden" value="" />

所以我们实际可以这样使用:

VIEWMODEL

  1. public class UserType
  2. {
  3. public int UserTypeID { get; set; }
  4.  
  5. [Required(ErrorMessage = "请输入用户类型名称")]
  6.  
  7. public string TypeName { get; set; }
  8. [Required(ErrorMessage = "请输入用户类型排序")]
  9. [Range(-, , ErrorMessage = "请输入正确的排序")]
  10. public int TypeOrder { get; set; }
  11. }

Controller

  1. public ActionResult Create()
  2. {
  3. ViewBag.MaxOrder = userTypeRepository.MaxOrder();
  4. return View();
  5. }

Save

  1. public void SaveData(UserType UserType)
  2. {
  3. met_UserType model = UserType.MapTo<met_UserType>();
  4.  
  5. if (UserType.UserTypeID == )
  6. {
  7. db.Entry<met_UserType>(model).State = EntityState.Added;
  8. LogRepository.Add(string.Format("添加了用户类型:{0}", UserType.TypeName));
  9. }
  10. else
  11. {
  12. db.Entry<met_UserType>(model).State = EntityState.Modified;
  13. LogRepository.Add(string.Format("编辑了用户类型:{0}", UserType.TypeName));
  14. }
  15. db.SaveChanges();
  16. }

C#属性默认值设置的更多相关文章

  1. HTML标签CSS属性默认值汇总

    HTML标签CSS属性默认值,在你需要还原默认值的时候比较有用. 以前一直在找这份文档,今天偶然在网上看到了.除了inline和block的定义,主要是要注意body|h1~h6|blockquote ...

  2. typescript 关于class属性类型定义被属性默认值覆盖的问题及解决方式

    问题来源于 React.component的第二个参数的类型定义问题,我构建了以下简化demo,方便描述问题: class P<STATE> { public state: STATE; ...

  3. php与js中函数参数的默认值设置

    php函数参数默认值设置: <?phpfunction test($val=3){   echo $val."<br/>";}test(11);test();?& ...

  4. js方法参数默认值设置

    这里的默认值设置 很容易以为和php相似 function(v1,v2="test") { alert(v2); } 但这样是不对的,js方法,如需传参,甚至可以不用预定义(也就是 ...

  5. sqlserver中GUID的默认值设置

    sqlserver中GUID的默认值设置 YID uniqueidentifier not null default (NEWSEQUENTIALID()), //有序GUID(只能用于表设计的时候的 ...

  6. JIRA描述默认值设置

    JIRA描述默认值设置 Setting a Default Value in the Description Field 转自https://confluence.atlassian.com/jira ...

  7. typescript 属性默认值使用箭头函数 this指向问题

    今天注意到前端小伙伴用react 定义component class的方法的时候是通过箭头函数的方式,表示好奇. class Test extends React.Component { public ...

  8. yii2中textarea中的默认值设置

    1. view中显示文本域的位置 <?= $form->field($goods_model, 'goods_introduce')->textArea(['class'=>' ...

  9. asp.net EF model中的默认值设置

    在做数据库规划时,通常会规划一些系统字段,也就是由数据库本身自行指定默认值到这个字段上,创建新的“创建时间(CreateDate)”字段就会常常这样设计. 如果希望能有默认值,且让.net 程序在新增 ...

随机推荐

  1. Python语言程序设计基础(6)—— 组合数据类型

    tuple 元组(创建后不能修改) tuple = "cat","dog","tiger","human" print( ...

  2. Doubly Linked List

    Doubly Linked List Your task is to implement a double linked list. Write a program which performs th ...

  3. apache 配置跨域访问

    在httpd.conf找到  去掉# LoadModule headers_module modules/mod_headers.so 然后在 独立域名配置 加入 Header set Access- ...

  4. java实现按拼音排序

    List<WaPayFileVO> list =(List<WaPayFileVO>) dao.execQueryBeanList(pagesql, params.toArra ...

  5. 【luogu P3275 [SCOI2011]糖果】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3275 把不等式 A > B 转化成 A - B >= 1或者 B - A <= -1再差分 ...

  6. CodeForces - 598C Nearest vectors(高精度几何 排序然后枚举)

    传送门: http://codeforces.com/problemset/problem/598/C Nearest vectors time limit per test 2 seconds me ...

  7. Node.js 笔记02

    一.关于命令 常用命令: dir 列出当前目录下面所有的文件 cd 目录名 进入到指定的目录,. 当前目录, .. 进入上级目录,cd . 当前目录, cd .. 上级目录 md 目录名 创建文件夹 ...

  8. 如何对Project Proffesional设置预警灯

    Project Proffesional没法一目了然地看到,为了实时看到任务延迟情况,我们必须设置预警灯. 1.添加两个新列“文本1”.“文本2”,重命名为“完成预警”.“进度预警”. 2.右键点击“ ...

  9. Django-rest-framework(五)自定义功能

    我们可以在settings.py文件中定义登录,权限,分页,异常等的全局配置,如下所示 REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'utils.pa ...

  10. 轻量ORM-SqlRepoEx (五) 存储过程操作

    .Net平台下兼容.NET Standard 2.0,一个实现以Lambda表达式转转换标准SQL语句,使用强类型操作数据的轻量级ORM工具,在减少魔法字串同时,通过灵活的Lambda表达式组合,实现 ...