无法在家庭控制器中使用模型类方法

Posted

技术标签:

【中文标题】无法在家庭控制器中使用模型类方法【英文标题】:Unable to use model class method in home Controller 【发布时间】:2020-08-11 13:45:18 【问题描述】:

家庭控制器

    [HttpGet]
    public ActionResult Login()
    
        return View();
    
    [HttpPost]
    public ActionResult Login(Login l)
    
        if (ModelState.IsValid)
        
            if (l.CheckUser(l.UserName, l.Password))
            
                return RedirectToAction("Home/Home");
            
            else
            
                Response.Write("Invalid User");
                return View();
            
        
        else
        
            return View();
        

    

模型类(登录)

 namespace sampleprojectone.Models
 
    public class Login
    
        [Required(ErrorMessage ="Username must not be empty")]
        [Display(Name ="Username")]
        public string Username  get; set; 
        [Required(ErrorMessage = "Password must not be empty")]
        [Display(Name = "Password")]
        public string Password  get; set; 
        public bool CheckUser(string username,string password)
           
                SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Constr"].ToString());
                con.Open();
                SqlCommand cmd = new SqlCommand("proc_checklogin", con);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@username", username);
                cmd.Parameters.AddWithValue("@password", password);
                bool b = Convert.ToBoolean (cmd.ExecuteScalar());
                return b;
           
     
 

错误

严重性代码描述项目文件行抑制状态 错误 CS1061“Login”不包含“CheckUser”的定义,并且找不到接受“Login”类型的第一个参数的可访问扩展方法“CheckUser”(您是否缺少 using 指令或程序集引用?) sampleprojectone G: \King\Projects\sampleprojectone\sampleprojectone\Controllers\HomeController.cs 35 活动

【问题讨论】:

我不确定,但我认为您还没有正确引用您的 Login 类可能是什么原因。尝试将登录函数命名为与登录类不同的名称... public ActionResult Login() --> public ActionResult LoginAction() public ActionResult Login(Login l) --> public ActionResult LoginWithCreds('Login l') 再试一次。如果找不到你的 Login 模型,可能是你没有正确引用它 您是否可能有一个 Login 控制器,因此您需要在 Login 方法中完全限定 Login 对象? public ActionResult Login(sampleprojectone.Models.Login l) 【参考方案1】:

我没有在 HomeController 中使用命名空间 using sampleprojectone.Models;。现在解决了,谢谢cornelis和rob。

【讨论】:

以上是关于无法在家庭控制器中使用模型类方法的主要内容,如果未能解决你的问题,请参考以下文章

如何在 httpPost 方法中使用另一个类

Codeigniter - 无法命中类中的方法

Java:观察同一类的许多对象

win10无法创建家庭组怎么办 如何加入家庭组

如何使用模型类在 laravel 8 资源控制器中编辑、销毁和获取单个值?

无法添加从其他类继承的模型控制器