【发布时间】:2020-05-08 21:35:05
【问题描述】:
我创建了一个带有 MVC 5 Internet 应用程序的模型,然后首先从数据库中添加到 ADO.Net 实体数据模型 > 代码中。 我在新创建的表中添加了一个外键,链接到 AspNetUsers 表中的 ID。
我创建了默认控制器,然后创建了带有实体框架的视图,一切正常。
用户名显示在下拉菜单中,代码如下
@Html.DropDownList("UserID", null, htmlAttributes: new { @class = "form-control" })
因此将其更改为以下内容,以便将其作为只读字段
<div class="form-group">
@Html.LabelFor(model => model.UserID, "Username", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DisplayFor(model => model.UserID)
@Html.HiddenFor(model => model.UserID)
</div>
</div>
使用此线程上的答案作为指导 Display EditorFor() value as Read-Only on MVC View? 我正在使用 VS 2013 MVC 5 以及所有更新。我怎样才能显示用户名?我需要用新方法调整控制器吗? (我上面有 UserId,因为我希望在修改后的代码中显示一些值,这样我就可以缩小问题所在)
根据要求
public partial class BaseContext : DbContext
{
public BaseContext() : base("name=BaseContext") {}
public virtual DbSet<C__MigrationHistory> C__MigrationHistory { get; set; }
public virtual DbSet<AspNetRole> AspNetRoles { get; set; }
public virtual DbSet<AspNetUserClaim> AspNetUserClaims { get; set; }
public virtual DbSet<AspNetUserLogin> AspNetUserLogins { get; set; }
public virtual DbSet<AspNetUser> AspNetUsers { get; set; }
public virtual DbSet<Customer> Customers { get; set; }
public virtual DbSet<Organisation> Organisations { get; set; }
public virtual DbSet<InternationalOffice> InternationalOffices { get; set; }
public virtual DbSet<NewsType> NewsTypes { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<AspNetRole>()
.HasMany(e => e.AspNetUsers)
.WithMany(e => e.AspNetRoles)
.Map(m => m.ToTable("AspNetUserRoles").MapLeftKey("RoleId").MapRightKey("UserId"));
modelBuilder.Entity<AspNetUser>()
.HasMany(e => e.AspNetUserClaims)
.WithRequired(e => e.AspNetUser)
.HasForeignKey(e => e.UserId);
modelBuilder.Entity<AspNetUser>()
.HasMany(e => e.AspNetUserLogins)
.WithRequired(e => e.AspNetUser)
.HasForeignKey(e => e.UserId);
modelBuilder.Entity<AspNetUser>()
.HasMany(e => e.Customers)
.WithRequired(e => e.AspNetUser)
.HasForeignKey(e => e.UserID)
.WillCascadeOnDelete(false);
modelBuilder.Entity<AspNetUser>()
.HasMany(e => e.Organisations)
.WithRequired(e => e.AspNetUser)
.HasForeignKey(e => e.UserID)
.WillCascadeOnDelete(false);
modelBuilder.Entity<Organisation>()
.HasMany(e => e.Customers)
.WithRequired(e => e.Organisation)
.WillCascadeOnDelete(false);
modelBuilder.Entity<Organisation>()
.HasMany(e => e.InternationalOffices)
.WithRequired(e => e.Organisation)
.WillCascadeOnDelete(false);
modelBuilder.Entity<NewsType>()
.HasMany(e => e.Customers)
.WithRequired(e => e.NewsType)
.WillCascadeOnDelete(false);
}
}
【问题讨论】:
-
你能分享你的模型和你的实体关系(DbSet配置)吗?
-
请看原帖。我现在已经添加了。我想这就是你所追求的
-
我猜你这里有一个强类型视图。您能否告诉我们您的视图绑定到什么
model?该模型实体是否具有username的属性?理想情况下,最好使用视图模型而不是数据库模型来绑定到您的视图。 -
它绑定到组织。这是使用我第一句话中的步骤生成的,不是我手动完成的
标签: c# asp.net-mvc entity-framework razor asp.net-mvc-5