【发布时间】:2012-12-11 06:40:07
【问题描述】:
我需要 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");
}
我正在使用 MVC 3、EF 4。
【问题讨论】:
-
你是如何接受控制器的?如果命名合适,模型绑定可能会接受它作为您的整数。您要提交完整的表格吗?你可能会做类似@Html.DropDownListFor(x => Convert.ToInt32(x.Book.PublisherId), Model.Items);但这只会给您的应用增加另一个故障点。
-
我已经添加了我的控制器代码。我会尝试你建议的转换,让你知道结果
-
MVC 模型绑定应该为您处理转换,如果您在 BookAdd 模型上有适当的属性。您是否尝试过没有任何显式转换?如果你这样做了,结果如何?
标签: c# asp.net-mvc-3 entity-framework-4 razor drop-down-menu