ASP.NET Razor - 如何为对象列表创建 POST 表单?

Posted

技术标签:

【中文标题】ASP.NET Razor - 如何为对象列表创建 POST 表单?【英文标题】:ASP.NET Razor - How to create a POST form for List of objects? 【发布时间】:2021-12-13 11:11:00 【问题描述】:

我需要创建一个 POST 表单来将新对象添加到数据库。我必须创建一个 Razor 页面,我可以在其中单击按钮添加新的课程表。在单击另一个按钮之后,所有课程都应添加到数据库上下文中。我仍然不知道该怎么做,所以我希望你能帮助我

 public class Course

    public Guid Id  get; set; 
    public string Category  get; set; 
    public string Title get; set; 
    public List<Lesson> Lessons  get; set;  = new List<Lesson>();

public class Lesson

    public Guid Id  get; set; 
    public string Title  get; set; 
    public string Text  get; set; 

这是我的意思的一些图像:

DB 有一个 Course 表和一个 Lesson 表。请告诉我如何创建一个页面来创建具有动态“课程”数量的新“课程”

【问题讨论】:

lessons可以是多个吗? 可以,可以是多个 为此,您需要使用`List 参数创建一个方法并使用cshtml 发布数据。也可以直接将课程模型传入参数。 Adding a related entity可以参考官方文档。 【参考方案1】:

请在您需要从页面传递的控制器方法中尝试使用此方法。

public ActionResult PostMethod(Course course, FormCollection formCollection)

    string title = course.Title; // Title value
    string category = course.Category; // Category value
    //add course into database
    if (course.Lessons != null && course.Lessons.Count > 0)
    
        foreach (var item in course.Lessons)
        
            //add Lessons into database
        
    

请注意,在此示例中,您将在 databases 中执行许多操作 为此,您还必须管理 transaction

Using Transactions or SaveChanges(false) and AcceptAllChanges()?

【讨论】:

以上是关于ASP.NET Razor - 如何为对象列表创建 POST 表单?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Asp.NET MVC 5 创建 ClaimsIdentity 对象?

如何为单选按钮列表创建数据源?

如何为asp.net中的每个项目添加复选框列表的工具提示

如何多次提交表单(asp.net core razor)

asp.net core中的Razor很慢

ASP.NET:如何为 GridView 创建自定义分页器?