【问题标题】:After call to an object from the client side I Got Error Code CS1061从客户端调用对象后,出现错误代码 CS1061
【发布时间】: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 活动

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

我照常进行以下步骤:

  1. 使用其属性创建对象(例如:帐户)
  2. 创建模型类继承自 DbContext
  3. 将 DbContext 添加到服务中
  4. 制作一个只采用方法名称的接口
  5. 在存储库类中实现这些方法(例如:repo_Account)
  6. 创建页面剃刀比创建普通方法 OnPost OnGet OnPut
  7. 使用方法(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


    【解决方案1】:

    您尚未在登录页面中定义名为 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]
    

    【讨论】:

    • 谢谢你,先生,我还是新的剃须刀页面,我曾经构建过 aspx 页面。我看过你的 dotnetting 页面.....哇,真的很棒的页面!再次祝福和感谢你:)
    猜你喜欢
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 2021-08-19
    • 2019-12-11
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多