我需要SelectListItem的值爲int。將下拉列表項的值轉換爲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
});
}
}
然後,我需要在從dropdownlist中選擇時再次將值作爲int存儲到Book.PublisherId中。我知道下面的代碼不完整,我想我需要以某種方式將選擇的項目的值轉換爲int,我該怎麼做?
@model Bookshops.Models.BookAdd
...
@Html.DropDownListFor(model => model.Book.PublisherId, Model.items);
而且finaly CONTROLER:
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");
}
我使用MVC 3,EF 4
你如何接受控制器?如果命名適當,模型綁定可能會將它作爲整數接受。您是否提交整個表單?你可以做一些像@ Html.DropDownListFor(x => Convert.ToInt32(x.Book.PublisherId),Model.Items);但它只會給你的應用增加另一個失敗點。 – parKing
我已經添加了我的控制器代碼..我將嘗試您建議的轉換,並讓您知道結果 –
如果您在BookAdd模型上具有適當的屬性,MVC模型綁定應該爲您處理轉換。您是否嘗試過沒有任何明確的轉換?如果你這樣做,結果是什麼? – parKing