trong chế độ xem tạo của tôi Tôi muốn cung cấp cho người dùng khả năng tạo danh sách các đối tượng (cùng loại). Do đó, tôi đã tạo một bảng trong chế độ xem bao gồm cả mỗi trường nhập trong mỗi hàng. Số hàng tương ứng với các đối tượng "có thể tạo" tương ứng là một số cố định.Tạo nhiều hơn một đối tượng cùng loại trong cùng một chế độ xem
Cho phép nói rằng có một cuốn sách lớp bao gồm hai thuộc tính tiêu đề và tác giả và người dùng sẽ có thể tạo hai hoặc ít sách hơn.
Tôi có thể làm như thế nào?
Tôi không biết cách chuyển danh sách các đối tượng (được gắn kết) vào bộ điều khiển. Tôi cố gắng:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(ICollection<Book> bookList)
{
if (ModelState.IsValid)
{
foreach(var item in bookList)
db.Books.Add(item);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(articlediscounts);
}
Và trong giao diện đó là:
<fieldset>
<legend>Book</legend>
<table id="tableBooks" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>Title</th>
<th>Author</th>
</tr>
</thead>
<tbody>
@for (int i = 0; i < 10 ;i++)
{
<tr>
<td>
<div class="editor-field">
@Html.EditorFor(model => model.Title)
@Html.ValidationMessageFor(model => model.Title)
</div>
</td>
<td>
<div class="editor-field">
@Html.EditorFor(model => model.Author)
@Html.ValidationMessageFor(model => model.Author)
</div>
</td>
</tr>
}
</tbody>
</table>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
Như Booklist là null, nó không hoạt động và tôi không biết làm thế nào để đặt tất cả các đối tượng được tạo trong danh sách này.
Nếu bạn có bất kỳ đề xuất nào tôi sẽ rất biết ơn.
"Chỉ cho phép đăng lại một cuốn sách" không đúng. Chế độ xem của GET không cần phải khớp với mô hình của POST. Các tham số hành động bài được ràng buộc dựa trên các trường trong biểu mẫu, không phải là '@ model' của khung nhìn. –
@ freedomn-m, Nhìn vào mã trong giao diện của OP - chúng đang tạo đầu vào với 'name =" title "' và một đầu vào với 'name =" Author "' sẽ đăng lại đối tượng 'Book'! –
"@model yourAssembly.Book .. cho phép bạn chỉ đăng lại một cuốn sách" - tuyên bố của bạn về việc chỉ đăng một cuốn sách đề cập đến '@ model' - không phải là tên đầu vào. Phần còn lại của bài viết với 'm [i] .Title' vv là tốt, chỉ là một phần. –