从客户端调用对象后,我收到错误代码CS1061



>严重性代码说明 项目文件行抑制状态 错误 CS1061"登录模型"不包含"模型"的定义 并且没有接受第一个参数的可访问扩展方法"模型" 可以找到类型为"登录模型"(您是否缺少使用指令 或程序集 参考? Lb_Clinics C:\Users\dibem\source\repos\Clinics\Lb_Clinics\Pages\Login.cshtml 25 Active

这是尝试将我的对象属性与文本字段绑定时的错误(以获得良好的验证(。

我像往常一样进行以下步骤:

  1. 创建对象及其属性(例如:帐户(
  2. 创建从数据库上下文继承的模型类
  3. 将数据库上下文添加到服务
  4. 创建一个仅采用方法名称的接口
  5. 在存储库类中实现这些方法(示例 :repo_Account(
  6. 创建页面剃刀比创建普通方法 OnPost OnGet OnPut
  7. 用方法制作表单(发布,放置(

我错过了什么吗? 我试图理解这个错误,我已经搜索了微软,它说当你调用一个不存在的方法时会发生这种情况 错误代码CS1061

这是我的实现: 1_Entity :

public class Account
{
public int AccountID { get; set; }
[Required]
[MinLength(3)]
[MaxLength(100)]
[DataType(DataType.EmailAddress)]
public string UserName { get; set; }
[Required]
[MinLength(3)]
[MaxLength(100)]
[DataType(DataType.Password)]
public string Password { get; set; }
public bool Verified { get; set; }

}

2 _ 数据库上下文 :

public class ClinicalDbContext:DbContext
{
public ClinicalDbContext(DbContextOptions options ):base(options)
{
Database.EnsureCreated();
}
public DbSet<Account> Accounts { get; set; }
}

3-服务的配置

一个-

public Startup(IConfiguration configuration,IHostingEnvironment env)
{
var builder = new ConfigurationBuilder().
SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json")
.AddJsonFile("appsettings.development.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build() ;
}

b-

services.AddDbContext<ClinicalDbContext>(option => {
option.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
});

4-指定方法的界面

public interface IAccount
{
//AddNewAccount ChangePassword ChangeEmailAddress Verify_Login
void AddNewAccount(Account account);
void ChangePassword(int AccountID, string Password);
void ChangeEmailAddress(int AccountID, string UserName);
int Verify_login(string UserName, string Password);
}

6 - 调用接口以将其与 cshtml 中的 IAction 事件绑定.cs (Login.cshtml.cs(

public class LoginModel : PageModel
{
private readonly IAccount _account;
public LoginModel(IAccount account)
{
_account = account;
}
[BindProperty]
public Account Account { get; set; }
public IActionResult OnPostAsync(Account Account)
{
if (!ModelState.IsValid)
{
return Page();
}
int ID = _account.Verify_login(Account.UserName, Account.Password);
if (ID > 0)
{
return RedirectToPage("/Index");
}
return Page();
}
5 - Repository that implement those methods
public class Repo_Account :IAccount
{
#region Instance Of Account 
private Account _Account;
public Account Account { get { return new Account(); } set { _Account = value; } }
#endregion
#region private read only instance of database context
private readonly ClinicalDbContext _db;
#endregion
#region Public constructor 
public Repo_Account(ClinicalDbContext db)
{
_db = db;
}
#endregion
//AddNewAccount ChangePassword ChangeEmailAddress Verify_Login
#region Add new account
public void AddNewAccount(Account account)
{
_db.Accounts.Add(account);
_db.SaveChanges();
}
#endregion

最后是cshtml页面

[![<input id="email" asp-for="Model.UserName" >
<div class="invalid-feedback">
<span asp-validation-for="Model.UserName" class="alert-danger"></span>
</div>
<input asp-for="Model.Password" class="form-control" >
<div class="invalid-feedback">
<span asp-validation-for="Model.Password" class="alert-danger"></span>
</div>
<button type="submit" class="btn btn-primary btn-block" >
Login
</button>][2]][2]

您尚未在登录页面中定义名为Model的属性。您已经定义了一个名为Account的。更改代码,如下所示:

[![<input id="email" asp-for="Account.UserName" >
<div class="invalid-feedback">
<span asp-validation-for="Account.UserName" class="alert-danger"></span>
</div>
<input asp-for="Account.Password" class="form-control" >
<div class="invalid-feedback">
<span asp-validation-for="Account.Password" class="alert-danger"></span>
</div>
<button type="submit" class="btn btn-primary btn-block" >Login</button>][2]][2]

相关内容

最新更新