ASP.Net MVC 表单/模型绑定和删除记录

本文关键字:绑定 删除 记录 模型 Net MVC 表单 ASP | 更新日期: 2023-09-27 18:33:07

我有一个模型,我正在将其加载到表单中的表中。使用 EF6 从 Oracle DB 检索记录并将其加载到模型中。我还希望用户能够通过表单中每一行中的复选框选择要从数据库中删除的记录。

检索与会者的函数:

public List<WebinarAttendeesList> getAttendees(string webinarKey)
{
    string connectionString = "Password=password;User Id=user;Data Source=Oracle";
    List<WebinarAttendeesList> r = null;
    using (webinarAttendeesListDbContext context = new webinarAttendeesListDbContext(connectionString))
    {
        var result = from w in context.WebinarAttendeesList
                     where w.webinarKey == webinarKey
                     orderby w.FirstPollCount, w.SecondPollCount
                     select w;
        r = result.ToList();
    }
    return r;
}

这是模型:

[Table("WEBINARATTENDEESLIST")]
public class WebinarAttendeesList {
    [Key, Column("WAL_ID")]
    public int wa_id { get; set; }
    [Column("WAL_CLI_RID")]
    public int ParticipantID { get; set; }
    [Column("WAL_FULLNAME")]
    public string FullName { get; set; }
    [Column("WAL_EMAIL")]
    public string Email { get; set; }
    [Column("WAL_JOINTIME")]
    public string JoinTime { get; set; }
    [Column("WAL_TIMEINSESSION")]
    public string TimeInSession { get; set; }
    [Column("WAL_LEAVETIME")]
    public string LeaveTime { get; set; }
    [Column("WAL_FIRSTPOLLCOUNT")]
    public int FirstPollCount { get; set; }
    [Column("WAL_SECONDPOLLCOUNT")]
    public int SecondPollCount { get; set; }
    [Column("WAL_ATTENDEDWEBINAR")]
    public int AttendedWebinar { get; set; }
    [Column("WAL_MAKEUP")]
    public int Makeup { get; set; }
    [Column("WAL_COMMENTS")]
    public string Comments { get; set; }
    [Column("WAL_REGISTRANTKEY")]
    public string RegistrantKey { get; set; }
    [Column("WAL_WEBINARKEY")]
    public string webinarKey { get; set; }
}

提交表单后,我将模型传递给一个函数,以将记录存储在 EF6 中。

public ActionResult PostAttendees(ICollection<WebinarAttendeesList> attendees)
{
    foreach (WebinarAttendeesList attendee in attendees)
    {
        UpdateAttendee(attendee);
    }
}

如何编辑模型以允许删除所选记录并更新未选中复选框的记录?如果我在没有 Column 属性的模型上放置一个 int delete 属性,我会得到以下异常:

ORA-00904: "Extent1"."delete": invalid identifier

我找到了本教程,但我在创建表单时没有使用任何帮助程序,也没有任何 ViewModels,它也没有解释如何处理基于复选框对不同记录执行不同操作:http://johnatten.com/2014/01/05/asp-net-mvc-display-an-html-table-with-checkboxes-to-select-row-items/

有没有更好的方法可以做到这一点?

ASP.Net MVC 表单/模型绑定和删除记录

是的。EF 中的所有模型属性都假定为列。如果您不希望将属性视为数据库中的"列",则应使用NotMapped属性。