asp.net mvc 页面不显示关联对象的属性

2023-12-22

我有以下简单的结构: 申请人 位置 申请人职位 和申请人职位历史

第三类有一份申请人推荐信和一份职位推荐信。 第 4 个表有一个与 ApplicantPosition 相关的参考

在 razon 页面中,我正在显示每个职位申请人的历史记录,例如,我想显示申请人的姓名

我在 html 中有这个,但是它显示为空,它只显示同一对象中字段的信息,例如注释和日期修改。

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.applicantPosition.Applicant.name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.applicantPosition.Position.name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.oldStatus.status)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.newStatus.status)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.comments)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.dateModified)
        </td>

我的模型是这样的:

namespace Data.Model
{

    public class Position
    {
        [DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]   
        public int PositionID { get; set; }

        [Required(ErrorMessage = "Position name is required.")]
        [StringLength(20, MinimumLength = 3, ErrorMessage = "Name should not be longer than 20 characters.")]
        [Display(Name = "Position name")]              
        public string name { get; set; }

        [Required(ErrorMessage = "Number of years is required")] 
        [Display(Name = "Number of years")]
        [YearsValidationAttribute(5, ErrorMessage = "{0} value must be greater than {1} years.")]        
        public int yearsExperienceRequired { get; set; }

        public virtual ICollection<ApplicantPosition> applicantPosition { get; set; }
    }

    public class Applicant
    {
        [DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]      
        public int ApplicantID { get; set; }

        [Required(ErrorMessage = "Name is required")] 
        [StringLength(20, MinimumLength = 3, ErrorMessage="Name should not be longer than 20 characters.")]
        [Display(Name = "First and LastName")]
        public string name { get; set; }

        [Required(ErrorMessage = "Telephone number is required")] 
        [StringLength(20, MinimumLength = 3, ErrorMessage = "Telephone should not be longer than 20 characters.")]
        [Display(Name = "Telephone Number")]
        public string telephone { get; set; }

        [Required(ErrorMessage = "Skype username is required")] 
        [StringLength(20, MinimumLength = 3, ErrorMessage = "Skype user should not be longer than 20 characters.")]
        [Display(Name = "Skype Username")]
        public string skypeuser { get; set; }

        public byte[] photo { get; set; }

        public virtual ICollection<ApplicantPosition> applicantPosition { get; set; }


    }

    public class ApplicantPosition
    {
        [Key]
        [Column("ApplicantID", Order = 0)]
        public int ApplicantID { get; set; }

        [Key]
        [Column("PositionID", Order = 1)]
        public int PositionID { get; set; }

        public virtual Position Position { get; set; }

        public virtual Applicant Applicant { get; set; }

        [Required(ErrorMessage = "Applied date is required")] 
        [DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
        [Display(Name = "Date applied")]     
        public DateTime appliedDate { get; set; }

        [Column("StatusID", Order = 0)]
        public int StatusID { get; set; }

        public Status Status { get; set; }

        //[NotMapped]
        //public int numberOfApplicantsApplied
        //{
        //    get
        //    {
        //        int query =
        //             (from ap in Position
        //              where ap.Status == (int)Status.Applied
        //              select ap
        //                  ).Count();
        //        return query;
        //    }
        //}
    }


    public class Address
    {
        [StringLength(20, MinimumLength = 3, ErrorMessage = "Country should not be longer than 20 characters.")]
        public string Country { get; set; }

        [StringLength(20, MinimumLength = 3, ErrorMessage = "City  should not be longer than 20 characters.")]
        public string City { get; set; }

        [StringLength(50, MinimumLength = 3, ErrorMessage = "Address  should not be longer than 50 characters.")]
        [Display(Name = "Address Line 1")]     
        public string AddressLine1 { get; set; }

        [Display(Name = "Address Line 2")]
        public string AddressLine2 { get; set; }   

    }



    public class ApplicationPositionHistory
    {
        [DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]
        public int ApplicationPositionHistoryID { get; set; }

        public ApplicantPosition applicantPosition { get; set; }

        [Column("oldStatusID")]
        public int oldStatusID { get; set; }

        [Column("newStatusID")]
        public int newStatusID { get; set; }

        [ForeignKey("oldStatusID")]
        public Status oldStatus { get; set; }

        [ForeignKey("newStatusID")]
        public Status newStatus { get; set; }

        [StringLength(500, MinimumLength = 3, ErrorMessage = "Comments  should not be longer than 500 characters.")]
        [Display(Name = "Comments")]
        public string comments { get; set; }

        [DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
        [Display(Name = "Date")]     
        public DateTime dateModified { get; set; }
    }

    public class Status
    {
        [DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]
        public int StatusID { get; set; }

        [StringLength(40, MinimumLength = 3, ErrorMessage = "Status  should not be longer than 20 characters.")]
        [Display(Name = "Status")]
        public string status { get; set; }

    }



}

控制器动作

public ViewResult History(int applicantId, int positionId)
        {
            var history= unitOfWork.ApplicantPositionHistoryRepository.Find(d => d.applicantPosition.ApplicantID == applicantId && d.applicantPosition.PositionID == positionId);
            return View(history);
        }

编辑 工作单元.cs

公共类工作单元 { 私有 HRContext 上下文 = new HRContext();

    private BaseRepository<Position> positiontRepository;
    private BaseRepository<ApplicantPosition> applicantpositiontRepository;
    private BaseRepository<Applicant> applicantRepository;
    private BaseRepository<Status> statusRepository;
    private BaseRepository<ApplicationPositionHistory> applicantPositionHistoryRepository;


    public BaseRepository<ApplicationPositionHistory> ApplicantPositionHistoryRepository
    {
        get
        {

            if (this.applicantPositionHistoryRepository == null)
            {
                this.applicantPositionHistoryRepository = new BaseRepository<ApplicationPositionHistory>(context);
            }
            return applicantPositionHistoryRepository;
        }
    }

    public BaseRepository<Status> StatusRepository
    {
        get
        {

            if (this.statusRepository == null)
            {
                this.statusRepository = new BaseRepository<Status>(context);
            }
            return statusRepository;
        }
    }

    public BaseRepository<Applicant> ApplicantRepository
    {
        get
        {

            if (this.applicantRepository == null)
            {
                this.applicantRepository = new BaseRepository<Applicant>(context);
            }
            return applicantRepository;
        }
    }

    public BaseRepository<Position> PositionRepository
    {
        get
        {

            if (this.positiontRepository == null)
            {
                this.positiontRepository = new BaseRepository<Position>(context);
            }
            return positiontRepository;
        }
    }

    public BaseRepository<ApplicantPosition> ApplicantPositionRepository
    {
        get
        {

            if (this.applicantpositiontRepository == null)
            {
                this.applicantpositiontRepository = new BaseRepository<ApplicantPosition>(context);
            }
            return applicantpositiontRepository;
        }
    }

    public void Save()
    {
        context.SaveChanges();
    }

    private bool disposed = false;

    protected virtual void Dispose(bool disposing)
    {
        if (!this.disposed)
        {
            if (disposing)
            {
                context.Dispose();
            }
        }
        this.disposed = true;
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }
}

HRContext.cs

 public class HRContext : DbContext
    {
        public DbSet<Position> Positions { get; set; }
        public DbSet<Applicant> Applicants { get; set; }
        public DbSet<ApplicantPosition> ApplicantsPositions { get; set; }
        public DbSet<ApplicationPositionHistory> ApplicationsPositionHistory { get; set; }
        public DbSet<Status> Status { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Position>().ToTable("Position");
            modelBuilder.Entity<Applicant>().ToTable("Applicant");
            modelBuilder.Entity<ApplicantPosition>().ToTable("ApplicantPosition");
            modelBuilder.Entity<ApplicationPositionHistory>().ToTable("ApplicationsPositionHistory");
            modelBuilder.Entity<Status>().ToTable("Status");

            modelBuilder.Entity<Position>().Property(c => c.name).IsRequired();
            modelBuilder.Entity<Applicant>().Property(c => c.name).IsRequired();
            modelBuilder.Entity<ApplicantPosition>().Property(c => c.appliedDate).IsRequired();
            modelBuilder.Entity<ApplicationPositionHistory>().Property(c => c.ApplicationPositionHistoryID).IsRequired();
            modelBuilder.Entity<Status>().Property(c => c.StatusID).IsRequired();

            modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
            base.OnModelCreating(modelBuilder);
        }
    }

BaseRepository.cs

public class BaseRepository<TEntity> : IRepository<TEntity> where TEntity : class
    {
        internal HRContext context;
        internal DbSet<TEntity> dbSet;

        public BaseRepository(HRContext context)
        {
            this.context = context;
            this.dbSet = context.Set<TEntity>();
        }

        public virtual TEntity GetByID(object id)
        {
            return dbSet.Find(id);
        }


        public virtual void Insert(TEntity entity)
        {
            dbSet.Add(entity);

        }

        public virtual void Delete(object id)
        {
            TEntity entityToDelete = dbSet.Find(id);
            Delete(entityToDelete);
        }

        public virtual void DeleteAll(List<TEntity> entities)
        {
            foreach (var entity in entities)
            {
                this.Delete(entity);
            }
        }

        public virtual List<TEntity> GetAll()
        {
            return context.Set<TEntity>().ToList();
        }

        public virtual void Delete(TEntity entityToDelete)
        {
            if (context.Entry(entityToDelete).State == EntityState.Detached)
            {
                dbSet.Attach(entityToDelete);
            }
            dbSet.Remove(entityToDelete);
        }

        public virtual void Update(TEntity entityToUpdate)
        {
            dbSet.Attach(entityToUpdate);
            context.Entry(entityToUpdate).State = EntityState.Modified;
        }

        public IQueryable<TEntity> Find(System.Linq.Expressions.Expression<Func<TEntity, bool>> predicate)
        {
            return dbSet.Where(predicate);
        }
    }

IRepository.cs

public interface IRepository<TEntity>
    {
        IQueryable<TEntity> Find(Expression<Func<TEntity, bool>> predicate);

        void Insert(TEntity entity);

        void Delete(TEntity entity);

        void DeleteAll(List<TEntity> entities);
    }

我更改了通用存储库并更改了控制器操作方法:

public ViewResult History(int applicantId, int positionId)
{
    //var history= unitOfWork.ApplicantPositionHistoryRepository.Find(d => d.applicantPosition.ApplicantID == applicantId && d.applicantPosition.PositionID == positionId);
     var history= db.ApplicationsPositionHistory.Include("ApplicantPosition").SingleOrDefault(d => d.applicantPosition.ApplicantID == applicantId && d.applicantPosition.PositionID == positionId);

    return View(history);
}

但是我收到了这个异常:

传递到字典中的模型项的类型为“Data.Model.ApplicationPositionHistory”,但此字典需要类型为“System.Collections.Generic.IEnumerable`1[Data.Model.ApplicationPositionHistory]”的模型项。


您的申请人职位历史存储库的 Find 方法是如何实现的?如果它是类似的东西

return entities.ApplicantPosition.SingleOrDefault(expression)

那么你必须启用急切加载像这样 :

return entities.ApplicantPosition.Include("Applicant").SingleOrDefault(expression)

顺便说一句,这就是我个人不喜欢这些“通用”存储库的原因 - 有always需要急切加载某些内容的情况,以及只是浪费资源的情况。在“非通用”存储库中,您只需创建两个方法

GetApplicantPositionWithApplicant(int id)

获取申请人位置(int id)

而且您的表达式(如果您考虑一下,实际上是查询逻辑)保留在模型(存储库)而不是控制器中。

编辑(回答评论)

关于通用存储库的“痛苦”:一般来说,只有当您正在构建一些非常大的应用程序时,通用存储库才是个好主意,您想要在更多层中分离事物,通常是数据访问层(通用存储库)、业务层(业务逻辑、工作流程、高级验证等),然后是控制和表示层(MVC 中的控制器+视图)。在这种情况下,通用存储库仅封装琐碎的 CRUD 逻辑,并且仅由业务层而不是控制器使用。

如果您没有进行一些繁重的工作(重要的工作流程、需要外部服务的验证等),那么您就不需要业务层,您可以将其“合并”到数据访问层中(或者如果您想要,将数据访问合并到业务层,它们成为一个身体一个灵魂:)

因此,如果您没有一些真正的业务层,那么您最终只能在控制器中得到一些业务逻辑,因为您的通用存储库并不真正适合于此。非通用存储库可以包含您的琐碎业务处理,并且您还可以为不同的场景实现自定义 CRUD - 很好的例子是仅当您知道需要它们时才急切加载它们)。

因此,重写的决定实际上取决于您,并且取决于您的架构和需求。

关于您的异常:

使用 SingleOrDefault,您的变量历史记录仅包含一个 ApplicationPositionHistory 对象,并且您的视图需要枚举 ApplicationPositionHistory 对象。将此数据检索封装在具有明确返回值的存储库调用中,您将防止此类错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

asp.net mvc 页面不显示关联对象的属性 的相关文章

  • Mvc ViewBag - 无法将 null 转换为“bool”,因为它是不可为 null 的值类型

    我想在生成某个视图时在控制器中将 bool 设置为 true 然后相应地更改视图的标题 这应该非常简单 但我得到的是 无法对空引用执行运行时绑定异常详细信息 Microsoft CSharp RuntimeBinder RuntimeBin
  • EntityTypeConfiguration - 什么是测试数据库映射的干净方法?

    背景 我公司当前的结构是使用 Plinqo Linq to Sql 创建 数据访问对象 然后使用一组自定义的 CodeSmith 模板来构建 业务对象 长话短说 这两组对象紧密耦合 并且使用 Linq to SQL 会导致非常丑陋的解决方法
  • MVC3 RESTful API 路由和 Http 动词处理

    我想为我的 MVC3 应用程序构建 RESTful Json Api 我需要帮助处理多个 Http Verbs 以操作单个对象实例 我读过 研究过 尝试过的内容 MVC 属性 HttpGet HttpPost等 允许我拥有一个具有多个共享相
  • 在 MVC 应用程序中配置 NHibernate 二级缓存

    我有一个使用 NHibernate 的 MVC3 应用程序 一切都很顺利 直到我开始尝试添加二级缓存 浏览网页几个小时后 我终于找到了我认为正确的 dll NHibernate Caches SysCache2 dll 并将其添加到我的项目
  • 如何使用 linq to sql 一次更新多行?

    Table id userid friendid name status 1 1 2 venkat false 2 1 3 sai true 3 1 4 arun false 4 1 5 arjun false 如果用户发送userid 1
  • MVC 中的 HttpPost 与 HttpGet 属性:为什么使用 HttpPost?

    所以我们有 HttpPost 这是一个可选属性 我知道这会限制调用 因此只能通过 HTTP POST 请求进行调用 我的问题是我为什么要这样做 想象一下以下情况 HttpGet public ActionResult Edit int id
  • HttpContext 中需要什么才能允许 FormsAuthentication.SignOut() 执行?

    我正在尝试为我们的注销方法编写一个单元测试 除其他外 它FormsAuthentication SignOut 然而 它抛出一个System NullReferenceException 我创建了一个模拟 HttpContext 使用起订量
  • 适用于移动应用程序的 REST API 上的 OAuth

    我正在开发移动应用程序的后端 使用 ASP NET MVC 4 Web Api 构建 RESTful API 该应用程序将在 iOS 和 Android 上运行 我的用户将只能使用他们的 Facebook 帐户登录 并且只有登录后 他们才能
  • 使用 Entity Framework Core 2.0 更改或重命名列名称而不丢失数据

    我意识到我的一个列标题拼写错误 因此我在模型中更改了它并创建了一个新的迁移以将其更新到数据库中 一切都很完美 直到我意识到实际发生的情况是一个新列取代了现有列并删除了所有数据 碰巧的是 由于这是一个教程数据库 因此恢复数据并不重要 只需几分
  • 如何添加没有值的属性

    我通过 html 助手和 TagBuilder 生成 HTML 文本框 我们有方法 TagBuilder Attributes Add key value 但对于 HTML5 required 属性不需要传递值 因此如果我传递空字符串 则输
  • 默认情况下 dbo 架构中的 EF 6 Code First __MigrationHistory

    我是代码优先实体框架的新手 第一次运行我的应用程序后登录数据库时 当我看到 MigrationHistory 表时 我有点困惑 我现在了解对此表的需求 但不喜欢它位于用户表内的标准 dbo 模式中 我认为它很唐突且有风险 我的第一个想法是将
  • 是否有正确的方法将自定义 Javascript 添加到 ASP.NET MVC 5 页面?

    目前 我已将 jQuery 源文件添加到 ASP NET 项目的 Scripts 文件夹中 在 Layout cshtml 页面中 我包含了 Scripts jquery 2 1 1 min js 现在 我可以在我制作的每个页面上包含 jQ
  • 实体框架连接字符串定义

    我只是想知道 什么是实体框架连接字符串实际意思 喜欢 metadata res Models Model1 csdl res Models Model1 ssdl res Models Model1 msl provider System
  • 不同提供商的相同 EDMX 文件

    我正在开发一个项目 其中有一个本地数据库 SQL CE 在不存在与服务器的连接的情况下用作缓冲区 在服务器上我想使用相同的数据库布局 当然 我想使用服务器和客户端上可用的 Common dll 中的相同 EDMX 文件 在客户端中 我有一个
  • 如何获取 ASP.NET MVC 中当前的虚拟路径?

    如何从 ASP NET MVC 视图中获取当前路径 URL 如果没有办法将其获取到视图中 那么如何将其获取到控制器中以便将其传递到视图呢 EDIT 我不需要 url 的协议和主机部分 这将为您返回视图中的 url
  • Kendo Grid 内联编辑中的多选列表

    我需要在剑道网格 内联编辑 中使用多选列表 以便用户可以从每行列表中选择多个值 以下是我的要求 显示时 剑道网格应显示所有选定值的逗号分隔列表 添加时 剑道网格应显示多选列表并允许选择多个值 编辑时 剑道网格应显示具有已选择值的多选列表 用
  • 如果项目包含多个文件夹,如何使用 Add-Migration

    我想Add Migration使用我的 DbContext 但出现错误 The term add migration is not recognized as the name of a cmdlet function script fil
  • 如何将 Ajax.BeginForm MVC 助手与 JSON 结果一起使用?

    我正在尝试使用 ASP NET MVC Ajax BeginForm 帮助程序 但不想在调用完成时使用现有的内容插入选项 相反 我想使用自定义 JavaScript 函数作为回调 这可行 但我想要的结果应该以 JSON 形式返回 不幸的是
  • 实体框架中的 DbSet [重复]

    这个问题在这里已经有答案了 我在实体框架中有以下代码 using var dbc new TestDbContext var data from a in dbc tableList select new a id ToList 当我调试代
  • MVC Html.Partial 或 Html.Action

    我是 ASP NET MVC 新手 所以请耐心等待 我需要构建一个在多个视图中重复的菜单 什么可以更好地服务于目的Html Action http msdn microsoft com en us library ee703423 aspx

随机推荐

  • jQuery Sortable 更新数据未序列化

    我正在使用jQuery 可排序插件 http johnny github io jquery sortable 查看有关如何序列化数据的基本示例 我有以下代码 div class span4 ol class serialization v
  • 如果我在 android 代码中使用 java.lang.Iterable#forEach,Lint 会给出错误

    在我的 android 代码 Kotlin 中 我使用 java iterable 的 forEach 方法 mandatoryViews forEach view gt my code here 下面是我在 build gradle ap
  • Mono 和 Mono.empty() 有何不同

    据我了解 在 Spring WebFlux 反应器中 Mono
  • rbind(deparse.level, ...) 中的错误:参数的列数与 R 不匹配

    我正在尝试对测试和训练数据进行一些特征工程 我很熟悉 python 但对 R 很陌生 Row binding train test set for feature engineering train test rbind train tes
  • Netbeans 添加带有可视化编辑器的弹出菜单

    我需要添加一个popup menu to the JFrame 但是当我将该组件放在那里时 它就消失了 我可以在代码中看到它 但无法编辑任何内容 有没有办法我可以像这样编辑它menu bar I use Netbeans 7 2 1如果这很
  • 将 numpy 数组转换为矩阵 rpy2、Kmeans

    我有一个 numpy 2D 数组 self sub 我想在 rpy2 kmeans 中使用它 k robjects r kmeans self sub 2 20 我总是收到以下错误 valueError 目前无法对该类型执行任何操作 我能做
  • 交换 numpy 数组中的列?

    from numpy import def swap columns my array col1 col2 temp my array col1 my array col1 my array col2 my array col2 temp
  • xml文件中的DOCTYPE是什么意思?

    在 hibernate 中我们使用配置和映射 xml 文件 在 xml 中 第一行是版本 然后我们指定 DOCTYPE DTD 行 例子 有人可以解释一下这是什么意思吗 我知道 DTD 是文档类型定义 就像定义 xml 语法一样 我想知道这
  • 故事板崩溃 - 编码兼容的关键 sceneViewController

    我在 iOS 5 中使用 Storyboard 时遇到间歇性崩溃 时常 当我尝试使用 Storyboard 中的视图控制器实例化新对象时 我会收到 SIGABRT 这似乎是一个非常普遍的错误 但我找不到其他人看到过这个错误 感谢您的帮助 S
  • 为什么process.memoryUsage()不输出节点进程消耗的内存

    在node js应用程序中 我使用代码 console log process memoryUsage 记录内存使用情况 输出如下 rss 13664256 heapTotal 6131200 heapUsed 3396912 当我使用进程
  • 如何按月分组(包括所有月份)?

    我按月份对表格进行分组 SELECT TO CHAR created YYYY MM AS operation COUNT id FROM user info WHERE created IS NOT NULL GROUP BY ROLLU
  • TFS 2015 版本管理访问构建变量

    在 TFS 2015 中 我们有一个构建 它将自动触发新版本 这是通过新实现的基于脚本的构建定义 https www visualstudio com docs build overview 现在我想将用户变量从构建传递到发布 我在构建中创
  • 更改ggplot地图R Studio中图例中的文本

    我正在尝试创建一张充满流感疾病热度的美国地图 我有两个问题 我无法更改图例中的变量文本 图例的顺序是错误的 1 gt 10 gt 2 gt 这是代码 library maps library ggplot2 Get all states d
  • 嵌套对象和数组解构

    我正在尝试使用解构将对象转换为更精简的版本 我的对象包括一个嵌套数组 其中也包含对象 我只想要这个数组中的几个字段 我可以很好地进行嵌套对象解构 并且可以很好地进行数组解构 但不能一起进行 我当前的尝试如下所示 var data title
  • jsx 表忽略换行符

    我正在尝试创建一个包含多行字符串的表 但我的表未正确设置该字符串的格式 这是 jsx td arr join n td 这是相应的 html td Line 1 Line 2 Line 3 Line 4 td 但在浏览器中它看起来像 发生了
  • 删除 Swagger UI 上的架构 - 续

    我已经关注了置顶文章 Net Core 3 1 删除 Swagger UI 上的架构 https stackoverflow com questions 62858580 net core 3 1 remove schema on swag
  • 两个进程写入一个文件,防止混合输出

    我想从两个进程获取输出并将它们合并到一个文件中 例如 proc1 gt gt output proc2 gt gt output 问题是最终文件中的输出可能会混淆 例如 如果第一个进程写入 hellow 第二个进程写道 bye 结果可能是这
  • 将 jquery 代码应用于多个文本区域

    我有一些代码可以工作 但有很多重复 http jsfiddle net 6Wp2j 25 http jsfiddle net 6Wp2j 25 input apple on keyup function div apple html thi
  • 如何以编程方式清除 Microsoft Edge 浏览器缓存?

    有谁知道如何以编程方式清除 Microsoft Edge 的缓存 Net 脚本 命令行 删除文件 上面给出的位置我认为是错误的 下面是 cookie 历史记录和缓存的位置 目录 C Users 用户名 AppData Local Micro
  • asp.net mvc 页面不显示关联对象的属性

    我有以下简单的结构 申请人 位置 申请人职位 和申请人职位历史 第三类有一份申请人推荐信和一份职位推荐信 第 4 个表有一个与 ApplicantPosition 相关的参考 在 razon 页面中 我正在显示每个职位申请人的历史记录 例如