我是新来的ASP.NET核心8,我有麻烦搞清楚如何设置一个多选框。在Compitem
创建视图,我想有一个多个可选字段的电子邮件地址。这样的人可以选择任何数量的电子邮件分配项目。
我尝试过的都不起作用。应该如何设置?目前没有错误,但该字段不显示任何可供选择的内容。DbContext
:
public virtual DbSet<Compitem> Compitems { get; set; }
public virtual DbSet<Email> Emails { get; set; }
public virtual DbSet<EmailCompitem> EmailCompitems { get; set; }
modelBuilder.Entity<Compitem>(entity =>
{
entity.HasKey(e => e.Id).HasName("PK__compitem__3213E83FEE3293C2");
entity.ToTable("compitems");
entity.HasIndex(e => e.CompProgramId, "index_compitems_on_program_id");
entity.HasIndex(e => e.StatusId, "index_compitems_on_status_id");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.CompProgramId).HasColumnName("compProgram_id");
entity.Property(e => e.CreatedAt)
.HasPrecision(6)
.HasColumnName("created_at");
entity.Property(e => e.DueDate)
.HasColumnType("datetime")
.HasColumnName("due_date");
entity.Property(e => e.EndTime)
.HasColumnType("datetime")
.HasColumnName("end_time");
entity.Property(e => e.Frequency)
.HasMaxLength(4000)
.HasColumnName("frequency");
entity.Property(e => e.FrequencyId).HasColumnName("frequency_id");
entity.Property(e => e.Name)
.HasMaxLength(4000)
.HasColumnName("name");
entity.Property(e => e.Notes).HasColumnName("notes");
entity.Property(e => e.Program)
.HasMaxLength(4000)
.HasColumnName("program");
entity.Property(e => e.StartTime)
.HasColumnType("datetime")
.HasColumnName("start_time");
entity.Property(e => e.StatusId).HasColumnName("status_id");
entity.Property(e => e.UpdatedAt)
.HasPrecision(6)
.HasColumnName("updated_at");
entity.HasOne(d => d.CompProgram).WithMany(p => p.Compitems)
.HasForeignKey(d => d.CompProgramId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_rails_eeb0d52db2");
entity.HasOne(d => d.FrequencyNavigation).WithMany(p => p.Compitems)
.HasForeignKey(d => d.FrequencyId)
.HasConstraintName("FK_compitems_compitems");
entity.HasOne(d => d.Status).WithMany(p => p.Compitems)
.HasForeignKey(d => d.StatusId)
.HasConstraintName("fk_rails_d7cd87e965");
entity.HasMany(c => c.EmailCompitems)
.WithOne(e => e.Compitem)
.HasForeignKey(e => e.CompitemId)
.HasConstraintName("fk_rails_c955c06548")
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<Email>(entity =>
{
entity.HasKey(e => e.Id).HasName("PK__emails__3213E83F90E488B6");
entity.ToTable("emails");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.CreatedAt)
.HasPrecision(6)
.HasColumnName("created_at");
entity.Property(e => e.Email1)
.HasMaxLength(4000)
.HasColumnName("email");
entity.Property(e => e.UpdatedAt)
.HasPrecision(6)
.HasColumnName("updated_at");
});
modelBuilder.Entity<EmailCompitem>(entity =>
{
entity.HasKey(e => e.Id).HasName("PK__email_co__3213E83FF6AC7B82");
entity.ToTable("email_compitems");
entity.HasIndex(e => e.CompitemId, "index_email_compitems_on_compitem_id");
entity.HasIndex(e => e.EmailId, "index_email_compitems_on_email_id");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.CompitemId).HasColumnName("compitem_id");
entity.Property(e => e.CreatedAt)
.HasPrecision(6)
.HasColumnName("created_at");
entity.Property(e => e.EmailId).HasColumnName("email_id");
entity.Property(e => e.UpdatedAt)
.HasPrecision(6)
.HasColumnName("updated_at");
entity.HasOne(d => d.Compitem).WithMany(p => p.EmailCompitems)
.HasForeignKey(d => d.CompitemId)
.OnDelete(DeleteBehavior.Cascade)
.HasConstraintName("fk_rails_c955c06548");
entity.HasOne(d => d.Email).WithMany(p => p.EmailCompitems)
.HasForeignKey(d => d.EmailId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_rails_e3e4c10f10");
});
字符串
Compitem.Create
public IActionResult Create()
{
ViewData["CompProgramId"] = new SelectList(_context.CompPrograms, "Id", "Title");
ViewData["FrequencyId"] = new SelectList(_context.Frequencies, "Id", "Title");
ViewData["StatusId"] = new SelectList(_context.Statuses, "Id", "Title");
ViewData["EmailValues"] = new SelectList(_context.Emails, "Id", "Email");
return View();
}
型
Create.cshtml
<div class="form-group">
<label asp-for="EmailValues" class="control-label">Select Email</label>
<select asp-for="EmailValues" asp-items="ViewBag.EmailValues"></select>
<span asp-validation-for="EmailValues" class="text-danger"></span>
</div>
型
完整项目型号:
public partial class Compitem
{
public long Id { get; set; }
public string Name { get; set; }
public string Program { get; set; }
public string Frequency { get; set; }
public string Notes { get; set; }
public DateTime? StartTime { get; set; }
public DateTime? EndTime { get; set; }
public DateTime? DueDate { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.Now;
public DateTime UpdatedAt { get; set; } = DateTime.Now;
public long CompProgramId { get; set; }
public long? FrequencyId { get; set; }
public long? StatusId { get; set; }
public virtual ICollection<Comment> Comments { get; set; } = new List<Comment>();
public virtual CompProgram CompProgram { get; set; }
public virtual ICollection<EmailCompitem> EmailCompitems { get; set; } = new List<EmailCompitem>();
public virtual Frequency FrequencyNavigation { get; set; }
public virtual Status Status { get; set; }
[NotMapped]
[DataType(DataType.Upload)]
public List<IFormFile> FileAttachments { get; set; }
// Additional properties for file metadata (optional, depending on your requirements)
public List<string> FileNames { get; set; } = new List<string>();
public List<string> FilePaths { get; set; } = new List<string>();
public List<string> EmailValues { get; set; } = new List<string>();
}
型
EmailCompitems型号:
public partial class EmailCompitem
{
public long Id { get; set; }
public long EmailId { get; set; }
public long CompitemId { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
public virtual Compitem Compitem { get; set; }
public virtual Email Email { get; set; }
}
型
电子邮件型号:
public partial class Email
{
public long Id { get; set; }
public string Email1 { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
public virtual ICollection<EmailCompitem> EmailCompitems { get; set; } = new List<EmailCompitem>();
}
型
1条答案
按热度按时间hfyxw5xn1#
目前没有错误,但该字段不显示任何可供选择的内容
在你的Email类中,属性名是“Email1”,而不是“Email”,所以在创建SelectList时,你应该使用“Email1”:
字符串
在Compitem创建视图中,我希望有一个多电子邮件地址可选字段。因此,该人可以选择任何数量的电子邮件分配到该项目。
您可以使用Bootstrap Select插件应用到您的下拉列表中,实现多选功能,允许用户选择多个地址并进行后续处理。这里有一个示例,您可以参考:
我的创建操作:
型
我的页面:
型
当我选择电子邮件时:
100d1x
的字符串