我接近将我的内容投入到数据库中,但当我尝试将其放入数据库时,它无法让自己进入数据库。
在写这个错误时没有获得数据库值的问题。
无法转换类型&System; System.Collections.Generic.List`1 [System.Web.Mvc.SelectListItem]'输入' System.IConvertible'。
发布此处
[HttpPost]
[AllowAnonymous]
public ActionResult create(AccountViewModels userindhold)
{
DataLinqDB db = new DataLinqDB();
if (!ModelState.IsValid)
{
var username = db.brugeres.FirstOrDefault(i => i.brugernavn == userindhold.Brugernavn);
if (username == null)
{
brugere OpretUser = new brugere();
OpretUser.kon = Convert.ToInt32(userindhold.Kon);//error her
OpretUser.birthday = Convert.ToDateTime(userindhold.Birthday);//error her
OpretUser.nyhedsbrevKategori_Id = Convert.ToInt32(userindhold.KategoriNyhedsbrev);//error her
db.brugeres.InsertOnSubmit(OpretUser);
db.SubmitChanges();
return RedirectToAction("login");
}
else
{
ModelState.AddModelError("", "Denne e-mail er genkendelig.");
}
}
return View();
}
获取
[HttpGet]
[AllowAnonymous]
public ActionResult create()
{
DataLinqDB db = new DataLinqDB();
AccountViewModels ac = new AccountViewModels();
ViewBag.Kon = new SelectList(db.Kons, "id", "konvalue");
ViewBag.KategoriNyhedsbrev = new SelectList(db.KategoriNyhedsbrevs, "id", "tekst");
return View();
}
在这里建模
[Display(Name = "Hvilken kategori kan du li til nyhedsbrevet?")]
public IEnumerable<SelectListItem> KategoriNyhedsbrev
{
get; set;
}
[Display(Name = "Hvilke køn er du?")]
public IEnumerable<SelectListItem> Kon
{
get; set;
}
我这里有一个表单,还有更多的输入区域。
index.cshtml
<div class="form-group">
<div class="col-xs-12">
@Html.LabelFor(u => u.Kon)
@Html.DropDownList("Kon", null, new
{
@class = "form-control",
})
</div>
</div>
<div class="form-group">
<div class="col-xs-12">
@Html.LabelFor(u => u.KategoriNyhedsbrev)
@Html.DropDownList("KategoriNyhedsbrev", null, new
{
@class = "form-control",
})
</div>
</div>
答案 0 :(得分:0)
在您的AccountViewModel中,Kon
是IEnumerable<SelectListItem>
类型的属性,您尝试将其传递给Convert.ToInt32
方法。 Convert.ToInt32通常需要数字数据的字符串版本(例如:"34"
),以便可以安全地将其转换为整数版本(例如:34
)。此方法无法将列表转换为整数值。
理想情况下,您应该在视图模型中添加属性以保存所选项目值
public class AccountViewModel
{
public int SelectedKon {set;get;}
public List<SelectListItem> Kon { get; set; }
//Your other properties also goes here
}
在你的剃刀视图中,
@model AccountViewModel
@using(Html.BeginForm())
{
@Html.DropDownListFor(s=>s.SelectedKon, Model.Kon,"Select one item")
<input type="submit" />
}
现在,在您的HttpPost操作中,您可以使用已发布模型的SelectedKon
属性值
[HttpPost]
public ActionResult Create(AccountViewModel model)
{
if (ModelState.IsValid)
{
brugere OpretUser = new brugere();
OpretUser.kon = model.SelectedKon;
//Do other useful things and redirect to a Success page.
}
//TO DO : Reload the model.Kon collection again here.
return View(model)
}
您应该为所有下拉菜单做同样的事情。