0
我想用外鍵將我的數據打包成表格,並將其發送到數據庫。我通過控制器從數據庫收集數據並在我的視圖中顯示,當我完成形式不能發送到數據庫,看到了異常無法將我的下拉列表中的數據插入到mvc4中的外鍵數據庫中
我的控制器代碼
public ActionResult Register()
{
testContext test = new testContext();
List<SelectListItem> listselecteditem = new List<SelectListItem>();
foreach (Gender item in test.genders)
{
SelectListItem selectlist = new SelectListItem()
{
Text = item.GenderType,
Value = item.GenderID.ToString(),
};
listselecteditem.Add(selectlist);
}
ViewBag.Datalist = new SelectList(listselecteditem, "Value", "Text");
return View();
}
該控制器從數據庫中獲取數據,併發送至DROPDOWNLIST
和該控制器保存在數據庫中我的數據
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Register(Person p)
{
using (testContext test=new testContext())
{
if (ModelState.IsValid)
{
try
{
test.persons.Add(p);
test.SaveChanges();
ViewBag.Message="Success";
}
catch (Exception ec)
{
ViewBag.Message = ec.Message;
}
}
}
return View(p);
}
這是我的看法
@model testmvc.Models.Person
<div class="container">
<div class="row">
<div class="pull-right col-sm-offset-3 col-sm-6">
<div class="panel panel-default">
<div class="panel-heading ">
<p>register</p>
</div>
<div class="panel-body">
@using (Html.BeginForm("Register", "RegisterLogin", FormMethod.Post, new { @class = "form-horizontal" }))
{
@Html.ValidationSummary(true)
<fieldset>
@Html.AntiForgeryToken()
@if (ViewBag.Messsage != null)
{
<div class="alert alert-success">
<p>@ViewBag.Message</p>
</div>
}
<div class="form-group">
@Html.TextBoxFor(model => model.Fullname, new { @class = "form-control", @placeholder = "Full name" })
</div>
<div class="form-group">
@Html.TextBoxFor(model => model.Username, new { @class = "form-control input-sm", @id = "last_name", @placeholder = "Username" })
</div>
<div class="form-group">
@Html.TextBoxFor(model => model.EmailAddress, new { @class = "form-control input-sm", @id = "email", @placeholder = "Email address" })
</div>
<div class="form-group">
@Html.TextBoxFor(model => model.Password, new { @class = "form-control input-sm floatlabel", @id = "first_name", @placeholder = "Password" })
</div>
<div class="form-group">
@Html.TextBoxFor(model => model.Comfirmpassword, new { @class = "form-control input-sm", @id = "last_name", @placeholder = "confirmpassword" })
</div>
<div class="form-group">
@*<select>
@foreach (var item in ViewBag.DataList)
{
<option>@item.Text</option>
}
</select>*@
@Html.DropDownList("Datalist",String.Empty)
</div>
<div class="form-group">
@Html.TextBoxFor(model => model.Birthday, new { @class = "form-control input-sm", @id = "password_confirmation", @placeholder = "Birthday yyyy/dd/mm" })
</div>
<div>
<input type="submit" value="Register" class="btn btn-primary">
</div>
</fieldset>
}
</div>
</div>
</div>
</div>
</div>
和我的模型代碼
public partial class Person
{
[Key]
public int personID { get; set; }
[Required]
public String Fullname { get; set; }
[Required]
public String Username { get; set; }
[Required]
public String Password { get; set; }
[Required]
[NotMapped]
public String Comfirmpassword { get; set; }
[Required]
public String EmailAddress { get; set; }
[DataType(DataType.DateTime)]
[Required]
public DateTime Birthday { get; set; }
public int GenderID { get; set; }
[ForeignKey("GenderID")]
public virtual Gender Gender { get; set; }
}
[Table("Gender")]
public partial class Gender
{
[Key]
public int GenderID { get; set; }
[Required]
public String GenderType { get; set; }
public virtual ICollection<Person> Persons { get; set; }
}
此異常說,沒有與 「Datalist中」 任何可視數據的關鍵。我怎樣才能解決這個問題,我的代碼問題是什麼
感謝alot.I請小心,並找出我可以使用linq代碼,並刪除它的所有選擇,插入,刪除和update.is這是正確的嗎?我是如此新的asp.net MVC,你能說我用什麼書來學習如何與linq一起工作? –