Я использую пакет: ASP.NET MVC3, SQL Server 2012, EF5. Когда я пытаюсь сохранить значения в моей базе данных, я могу сохранить только базу данных Book IsSelected in Books в моей базе данных, сохраненную в StudentName и не удалось сохранить данные в моей таблице StudentBooks в базе данных, в которой содержатся StudentId и BookId, ключи для многих - Какие-то отношения, какие-то идеи?ASP.NET MVC3 создает много-ко многим
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>
}
}
Мои модели
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