在尝试通过Entity Framework更新数据时,我正在努力使用ASP.NET MVC3.过程如下:
我有这个型号:
public class Bet { public string BetID { get; set; } public int FixtureID { get; set; } public string Better { get; set; } public int GoalsHome { get; set; } public int GoalsGuest { get; set; } public virtual Fixture { get; set; } }
在控制器中,我通过where语句过滤表,只获得与用户匹配的entrys:
[HttpGet] public ActionResult Index() { var user = User.Identity.Name; var model = _db.Bets.Where(t => t.Better == user); return View(model); }
View是两部分,一部分负责表头,另一部分列出用户的所有赌注:
<fieldset> <legend>Bets</legend> <table> <tr> <th> Kickoff </th> <th> Home Team </th> <th> Guest Team </th> <th> Group </th> <th> Bet </th> </tr> @Html.EditorFor(m => m) //this is resolved in an self made EditorTemplate </table>
EditorTemplate:
@model Betting.Models.Bet <tr> <td> @Html.displayFor(modelItem => Model.Fixture.Kickoff) </td> <td> @Html.displayFor(modelItem => Model.Fixture.HomeTeam) </td> <td> @Html.displayFor(modelItem => Model.Fixture.GuestTeam) </td> <td> @Html.displayFor(modelItem => Model.Fixture.Group) </td> <td> @Html.TextBoxFor(modelItem => Model.GoalsHome,new { style = "width: 30px" }): @Html.TextBoxFor(modelItem => Model.GoalsGuest,new { style = "width: 30px" }) </td> @Html.HiddenFor(modelItem => Model.FixtureID) </tr>
回到控制器,我尝试更新模型:
[HttpPost] public ActionResult Index(FormCollection collection) { var user = User.Identity.Name; var model = _db.Bets.Where(t => t.Better == user); TryUpdateModel(model); _db.SaveChanges(); return RedirectToAction("Index"); }
这绝对没有.实体框架根本不会更新数据库.我甚至将表格分开,以便html文件中的结果下注标签可以区分(注意名称值之前的[index]:
<input data-val="true" data-val-number="The field GoalsHome must be a number." data-val-required="The GoalsHome field is required." name="[1].GoalsHome" style="width: 30px" type="text" value="3" />: <input data-val="true" data-val-number="The field GoalsGuest must be a number." data-val-required="The GoalsGuest field is required." name="[1].GoalsGuest" style="width: 30px" type="text" value="0" />
有人可以告诉我为什么实体框架没有更新数据库?对象映射有问题吗?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。