严重性代码描述项目文件行抑制状态 错误CS1061“ LoginModel”不包含“模型”的定义 并且没有可访问的扩展方法“模型”接受第一个参数 可以找到“ LoginModel”类型(您是否缺少using指令 或组装 参考?)Lb_Clinics C:\ Users \ dibem \ source \ repos \ Clinics \ Lb_Clinics \ Pages \ Login.cshtml 25有效
这是尝试将我的object属性与文本字段绑定(以获得良好验证)时发生的错误。
我照常执行以下步骤:
我错过了什么吗?我试图理解此错误,我搜索了microsoft,它说在您调用不存在的方法Error Code 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 _ DbContext:
public class ClinicalDbContext:DbContext
{
public ClinicalDbContext(DbContextOptions options ):base(options)
{
Database.EnsureCreated();
}
public DbSet<Account> Accounts { get; set; }
}
3-服务的配置
a-
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-调用Interface使其与cshtml.cs(Login.cshtml.cs)中的IAction事件绑定
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]
答案 0 :(得分: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]