要在ASP.NET Core 3.0 MVC中对包含对象列表的对象进行CRUD操作,可以按照以下步骤进行:
public class ParentObject
{
public int Id { get; set; }
public string Name { get; set; }
public List Children { get; set; }
}
public class ChildObject
{
public int Id { get; set; }
public string Name { get; set; }
}
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions options) : base(options)
{
}
public DbSet ParentObjects { get; set; }
public DbSet ChildObjects { get; set; }
}
在Startup.cs文件的ConfigureServices方法中添加以下代码:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddControllersWithViews();
}
创建一个名为ParentObjectsController的控制器,并使用Entity Framework Core的API来执行CRUD操作。
public class ParentObjectsController : Controller
{
private readonly ApplicationDbContext _context;
public ParentObjectsController(ApplicationDbContext context)
{
_context = context;
}
public async Task Index()
{
var parentObjects = await _context.ParentObjects.Include(p => p.Children).ToListAsync();
return View(parentObjects);
}
public IActionResult Create()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task Create(ParentObject parentObject)
{
if (ModelState.IsValid)
{
_context.Add(parentObject);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(parentObject);
}
public async Task Edit(int id)
{
var parentObject = await _context.ParentObjects.FindAsync(id);
if (parentObject == null)
{
return NotFound();
}
return View(parentObject);
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task Edit(int id, ParentObject parentObject)
{
if (id != parentObject.Id)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
_context.Update(parentObject);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!ParentObjectExists(parentObject.Id))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction(nameof(Index));
}
return View(parentObject);
}
public async Task Delete(int id)
{
var parentObject = await _context.ParentObjects.FindAsync(id);
if (parentObject == null)
{
return NotFound();
}
return View(parentObject);
}
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task DeleteConfirmed(int id)
{
var parentObject = await _context.ParentObjects.FindAsync(id);
_context.ParentObjects.Remove(parentObject);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
private bool ParentObjectExists(int id)
{
return _context.ParentObjects.Any(e => e.Id == id);
}
}
在Views文件夹下创建一个名为ParentObjects的文件夹,然后在该文件夹下创建以下视图文件:
这样,你就可以在ASP.NET Core 3.0 MVC中对包含对象列表的对象进行CRUD操作了。