在MVC创建视图注册新账户时如何将余额属性设为默认0
如何在MVC注册新账户时默认设置余额为0?
没问题,我来给你几种简单的实现方式,让刚注册的用户默认余额直接是0~
先提个小细节:你的模型代码里public string "UserName" { get; set; }这种写法是语法错误,属性名不能加引号,得改成public string UserName { get; set; },Password和TradeLink同理,不然代码根本编译不过哦。
方法一:在模型构造函数里自动初始化
这是最省心的方式,只要创建SteamAccount实例,余额就自动设为0。修改你的模型代码,加个构造函数就行:
namespace CSGO_MVC.Models { public class SteamAccount { // 构造函数:实例化时自动设置默认余额 public SteamAccount() { // 如果你的Balance是int/decimal这类数值类型,直接赋值0 accountbalance = 0; // 要是Balance是你自定义的类(比如带Amount属性),就改成下面这样: // accountbalance = new Balance { Amount = 0 }; } [Key] public int Id { get; set; } public long SteamId { get; set; } public Balance accountbalance { get; set; } public string UserName { get; set; } // 已去掉引号 public string Password { get; set; } // 已去掉引号 public bool UserStatus { get; set; } public string TradeLink { get; set; } // 已去掉引号 } }
方法二:在控制器的Post方法里手动赋值
如果不想改动模型,也可以在接收注册数据后,手动给余额设值再保存到数据库:
[HttpPost] public ActionResult Create(SteamAccount acc) { if (ModelState.IsValid) { // 手动设置默认余额为0 acc.accountbalance = 0; // 自定义Balance类的话用:acc.accountbalance = new Balance { Amount = 0 }; AccountRepo.Insert(acc); AccountRepo.Save(); return RedirectToAction("Index"); } else { return View(acc); } }
方法三:数据库层面设置默认值(可选)
如果你用的是EF Code First,还可以在数据库字段上配置默认值,这样就算别的地方创建实例没设值,数据库也会自动填0。需要在DbContext里配置:
protected override void OnModelCreating(DbModelBuilder modelBuilder) { // 假设Balance是数值类型,给它设置数据库默认值0 modelBuilder.Entity<SteamAccount>() .Property(s => s.accountbalance) .HasDefaultValue(0); }
如果Balance是自定义复杂类型,这个方法可能需要调整,优先用前两种更直观。
你可以根据自己的Balance类型选最合适的方法,要是Balance是普通数值型,方法一或二都超简单~
内容的提问来源于stack exchange,提问作者Nick Mensen fazzerboy2425
相关产品推荐
相关产品推荐

