SelectListItemの値をintにする必要があります。
そこで、データベースからプルし、プロセスで文字列に変換して、listitemの値に保存します。
public class BookAdd
{
public BookAdd()
{
public Book Book { get; set; }
DataModelContainer db = new DataModelContainer();
IEnumerable<SelectListItem> items = db.PublisherSet
.Select(i => new SelectListItem
{
Value = SqlFunctions.StringConvert((double)i.Id),
Text = i.Name
});
}
}
次に、ドロップダウンリストから選択したときに、値をintとしてBook.PublisherIdに再度格納する必要があります。以下のコードが完全ではないことを知っています。選択したアイテムの値をintに変換する必要があると考えました。どうすればよいですか?
@model Bookshops.Models.BookAdd
...
@Html.DropDownListFor(model => model.Book.PublisherId, Model.items);
そして最後にコントローラー:
public ActionResult Create2()
{
var bookAdd = new BookAdd();
ViewBag.Publisher = bookAdd.items;
return View(bookAdd);
}
//
// POST: /Book/Create
[HttpPost]
public ActionResult Create2(BookAdd book)
{
if (ModelState.IsValid)
{
Book book2 = new Book();
book2.Id = book.Book.Id;
book2.AuthorId = book.Book.AuthorId;
book2.Isbn = book.Book.Isbn;
book2.Id = int.Parse(book.Book.PubId);
book2.Title = book.Book.Title;
book2.YearPublished = book.Book.YearPublished;
db.BookSet.Add(book2);
db.SaveChanges();
}
return RedirectToAction("Index");
}
私はMVC3、EF4を使用しています。