나는 ASP.NET MVC3, SQL Server 2012, EF5를 사용하고 있습니다. 내 데이터베이스에 값을 저장하려고하면 내 책의 책 테이블에서 IsSelected라는 책의 속성 만 저장할 수 있고 StudentName은 저장되지 않고 Studentbook과 BookId가 포함 된 StudentBooks 테이블에 저장된 데이터를 저장할 수 없습니다. - 많은 관계, 어떤 아이디어?ASP.NET MVC3 many-to-many 만들기
public class CheckboxController : Controller
{
EFDbContext context = new EFDbContext(ConfigurationManager.ConnectionStrings[1].ConnectionString);
//
//GET: /Checkbox/
public ActionResult Index()
{
ViewModelData vmd = new ViewModelData();
List<Book> bookList = new List<Book>();
using (EFDbContext te = new EFDbContext(ConfigurationManager.ConnectionStrings[1].ConnectionString))
{
var student = te.Students.First();
vmd.StudentName = student.StudentName;
var data = te.Books.ToList();
foreach (var d in data) {
Book book = new Book();
book.BookName = d.BookName;
book.IsSelected = false;
book.BookId = d.BookId;
bookList.Add(book);
}
}
vmd.Books = bookList;
return View(vmd);
}
//
//GET: /Checkbox/
[HttpPost]
public ActionResult Index(ViewModelData vm)
{
foreach (var book in vm.Books) {
context.Books.First(x => x.BookId == book.BookId).IsSelected = book.IsSelected;
}
context.SaveChanges();
return View(vm);
}
}
public class ViewModelData
{
public string StudentName { get; set; }
public List<Book> Books { get; set; }
}
보기
@model UsingEFNew.Controllers.ViewModelData
@{
ViewBag.Title = "Example";
}
@using (Html.BeginForm("Index", "Checkbox", null, FormMethod.Post))
{
<div>Your Name:</div>
<div>
@Html.TextBoxFor(model => model.StudentName)
</div>
for (int i = 0; i < Model.Books.Count; i++) {
@Html.CheckBoxFor(m => Model.Books[i].IsSelected)
@Html.DisplayFor(m => Model.Books[i].BookName)
@Html.HiddenFor(m => Model.Books[i].BookId)
@Html.HiddenFor(m => Model.Books[i].BookName)
@:</br>
}
}
내 모델 당신의 [HttpPost] 인덱스에서
public class Book {
public int BookId { get; set; }
public string BookName { get; set; }
public bool IsSelected { get; set; }
public ICollection<Student> Students { get; set; }
}
public class Student {
public int StudentId { get; set; }
public string StudentName { get; set; }
public ICollection<Book> Books { get; set; }
public ICollection<City> Cities { get; set; }
}
북 모델 및 학생 모델 표시 – Greg
완료 했습니까? – Rakstit
여기에는 여러 가지 문제가 있습니다. 첫째, ViewModel은 이름뿐만 아니라 Student 객체를 사용해야합니다. 둘째, 뷰에서 컬렉션을 반복하는 방식이 잘못되어 바인딩이 올바르지 않은 것입니다. 나에게 프로젝트를 보내면 해결할 것이다. – Greg