示例代码:
public class ComplexObject
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public List NestedObjects { get; set; }
}
public class NestedObject
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsSelected { get; set; }
}
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
代码示例:
public class ComplexObjectController : Controller
{
private readonly ApplicationDbContext _context;
public ComplexObjectController(ApplicationDbContext context)
{
_context = context;
}
// GET: //
public IActionResult Index()
{
var complexObjects = _context.ComplexObjects.Include(co => co.NestedObjects); // 获取对象及其包含的复杂对象
return View(complexObjects.ToList());
}
// GET: //Create
public IActionResult Create()
{
var model = new ComplexObject();
model.NestedObjects = new List(); // 创建嵌套对象列表
PopulateNestedObjectData(model); // 用示例数据填充列表
return View(model);
}
// POST: //Create
[HttpPost]
[ValidateAntiForgeryToken]
public async Task Create([Bind("Name,Price,NestedObjects")] ComplexObject complexObject)
{
if (ModelState.IsValid)
{
_context.Add(complexObject);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
PopulateNestedObjectData(complexObject); // 用示例数据重新填充视图
return View(complexObject);
}
// 使用示例数据填充嵌套对象列表
private void PopulateNestedObjectData(ComplexObject model)
{
var nestedObjects = new List
{
new NestedObject {Name="Nested