【发布时间】:2019-03-12 10:35:57
【问题描述】:
严重性代码描述项目文件行抑制状态 错误 CS1061 'LoginModel' 不包含 'Model' 的定义 并且没有可访问的扩展方法“模型”接受第一个参数 可以找到“LoginModel”类型的(您是否缺少 using 指令 或大会 参考?)Lb_Clinics C:\Users\dibem\source\repos\Clinics\Lb_Clinics\Pages\Login.cshtml 25 活动
这是尝试将我的对象属性与文本字段绑定时的错误(以获得良好的验证)。
我照常进行以下步骤:
- 使用其属性创建对象(例如:帐户)
- 创建模型类继承自 DbContext
- 将 DbContext 添加到服务中
- 制作一个只采用方法名称的接口
- 在存储库类中实现这些方法(例如:repo_Account)
- 创建页面剃刀比创建普通方法 OnPost OnGet OnPut
- 使用方法(post , put)制作表单
我错过了什么吗?我试图理解这个错误,我搜索了微软,它说当你调用一个不存在的方法时会发生这种情况Error Code CS1061
这是我的实现: 1_实体:
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- 服务配置
一个-
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.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]
【问题讨论】:
标签: c# asp.net-mvc asp.net-core razor-pages