【问题标题】:The bool value always is always taken as false but its true in database? MVC布尔值总是被认为是假的,但它在数据库中是真的吗? MVC
【发布时间】:2021-03-30 23:07:56
【问题描述】:

我已在我的数据库中将用户(管理员)类型定义为“位”数据类型。因此,如果值为 true,它应该转到特定页面,否则它应该返回相同的视图。但是,每当我传递具有不同值的对象(adminObj)时,if 语句只会从数据库返回“false”。有人可以帮忙解决问题吗?

这是我的逻辑

[HttpPost]
        public ActionResult Login(tbl_Admin adminObj)
        { 
            studentDBEntities db = new studentDBEntities();
            var adminvar = db.tbl_Admin.Where(x => x.Email == adminObj.Email && x.Password == adminObj.Password).FirstOrDefault();
            var type=adminObj.Type;
            if (adminvar != null)
            {
                /*var isGlobal=*/
                if (adminObj.Type == true)
                {
                    return RedirectToAction("ListAdmin");
                }
                else
                {
                    return View();
                }
            }
            else 
            {
                return View();
            }
        }

数据库表中的值:

当类型=1时

【问题讨论】:

  • 如何使用调试器或旧的打印语句来确定 adminvar.type 的(编程)类型和值是什么?什么是数据库类型?您必须手动定义模型映射吗?如果是这样,这个对象是什么?
  • 我有mssql,我没有使用手动映射。
  • 类型在我的模型中具有布尔值
  • 这样试试if(type){...}你不需要在bool值中使用true

标签: asp.net-mvc if-statement boolean


【解决方案1】:

好的,我在这里找到了逻辑错误。我调用的是登录对象,而不是实际存储获取数据的对象。所以我应该调用 var type=adminvar.Type; 而不是 var type=adminObj.Type;

所以修正后的逻辑是

[HttpPost]
        public ActionResult Login(tbl_Admin adminObj)
        { 
            studentDBEntities db = new studentDBEntities();
            var adminvar = db.tbl_Admin.Where(x => x.Email == adminObj.Email && x.Password == adminObj.Password).FirstOrDefault();
           
            if (adminvar != null)
            {
                
                if (adminvar.Type== true)
                {
                    return RedirectToAction("ListAdmin");
                }
                else
                {
                    return View();
                }
            }
            else 
            {
                return View();
            }
        }

【讨论】:

  • type 是保留字吗?此外,您应该能够使用单个语句,因为您只有两个结果。
  • 你能详细说明一下吗?
  • 您的 gui 将变量“type”着色为与其他关键字相同的颜色。使用受限名称作为变量通常是个坏主意,因为它可能在将来的任何时候中断。对于第二部分,您要么重定向要么发送视图,所以我将其写为: if (adminvar != null and adminvar.Type == True) { return RedirectToAction("ListAdmin"); } 返回视图();
猜你喜欢
  • 2012-01-31
  • 1970-01-01
  • 2014-08-02
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
  • 2011-08-28
相关资源
最近更新 更多