呼吁的DataContext的SubmitChanges不更新数据库

在C#中的ASP.NET MVC应用程序,我用链接到SQL提供数据以我的申请。 我有简单的数据库模式是这样的:

在我的控制器I类引用叫这个数据上下文Model (你可以在右侧画面属性看)是这样的:

private Model model = new Model();

我有一个表(表)在我的网页系列呈现。 它使得正常,我可以添加删除功能删除这样的系列:

public ActionResult Delete(int id) { model.Series.DeleteOnSubmit(model.Series.SingleOrDefault(s => s.ID == id)); model.SubmitChanges(); return RedirectToAction("Index"); }

在适当情况下采取行动的链接看起来是这样的:

<%: Html.ActionLink("Delete", "Delete", new { id=item.ID })%>

还可以创建(以类似的方式实现的)工作正常。 不过编辑不起作用。 我的编辑是这样的:

public ActionResult Edit(int id) { return View(model.Series.SingleOrDefault(s => s.ID == id)); } [HttpPost] public ActionResult Edit(Series series) { if (ModelState.IsValid) { UpdateModel(series); series.Title = series.Title + " some string to ensure title has changed"; model.SubmitChanges(); return RedirectToAction("Index"); } return View(series); }

我已经控制了我的数据库中有一个主键设置正确。 我调试我的应用程序,并发现一切正常,直到与行model.SubmitChanges(); 此命令不适用于Title属性的变化(或任何其他)对数据库。

请帮忙。

编辑:如果我加入这一行model.Series.Attach(series);之前model.SubmitChanges();没有变化-编辑仍然没有反映到数据库。 实例作为参数传递已附加到数据上下文编辑方法model

编辑:代码的观点,即属于方法编辑:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<TVSeriesInfoApp.Models.Series>" %> <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> Edit </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2>Edit</h2> <% using (Html.BeginForm()) {%> <%: Html.ValidationSummary(true) %> <fieldset> <legend>Fields</legend> <div class="editor-label"> <%: Html.LabelFor(model => model.Title) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(model => model.Title) %> <%: Html.ValidationMessageFor(model => model.Title) %> </div> <div class="editor-label"> <%: Html.LabelFor(model => model.Seasons) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(model => model.Seasons) %> <%: Html.ValidationMessageFor(model => model.Seasons) %> </div> <div class="editor-label"> <%: Html.LabelFor(model => model.Stars) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(model => model.Stars) %> <%: Html.ValidationMessageFor(model => model.Stars) %> </div> <p> <input type="submit" value="Save" /> </p> </fieldset> <% } %> <div> <%: Html.ActionLink("Back to List", "Index") %> </div> </asp:Content>

--------------解决方案-------------

这是我们的编辑动作将是什么样子(调整后的模型):

[HttpPost]
public ActionResult Edit(int id, Series series)
{
Series updatingSeries = model.Series.Single(s => s.ID == id);

try
{
TryUpdateModel(updatingSeries);
model.SubmitChanges();

return RedirectToAction("Details", new { id = updatingSeries.ID });
}
catch
{
return View(updatingSeries);
}
}

这可能发生,因为ModelState中可能无法在某些情况下有效的。 你已经做了的视​​图? 您也可以发表您查看代码在这里吗?

首先,从来没有“删除”使用HTTP GET(这是你在做什么用Html.ActionLink("Delete", "Delete", new { id=item.ID })

至于编辑,你首先要Attach您的实例的DataContext

分类:C# 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.514 (s). 10 q(s)