您好我的代码中包含问题的两个部分。
public ActionResult Edit(int? id){
if (id == null)
{return new HttpStatusCodeResult(HttpStatusCode.BadRequest);}
Post post = db.Posts.Find(id);
StringBuilder tagList = new StringBuilder();
foreach (Tag tag in post.Tags)
{
tagList.AppendFormat("{0} ", tag.Name);
}
ViewBag.Tags = tagList.ToString();
if (post == null){return HttpNotFound();}
return View(post);}
第1部分在同一字段中添加标签。 标签中相反行的第2部分。
public ActionResult Edit([Bind(Include = "Id,Title,DateTime,Body,Avtor")] Post post, string tags)
{if (ModelState.IsValid){
db.Entry(post).State = EntityState.Modified;
post.Tags.Clear();
tags = tags ?? string.Empty;
string[] tagNames = tags.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string tagName in tagNames)
{
post.Tags.Add(GetTag(tagName));
}
db.SaveChanges();
return RedirectToAction("Index");}
return View(post);}
行“post.Tags.Clear();”中的问题它没有删除连接,我收到一个错误:
"Violation of PRIMARY KEY constraint 'PK_PostsTags'. Cannot insert duplicate key in object 'dbo.PostsTags'. The duplicate key value is (1, 3).
The statement has been terminated."
在行“db.SaveChanges();”中,至少我是这么认为的,尽管我没有什么经验可以用明显的信心说话。我看了其他的情况,但它会帮助我找不到。请告诉我哪里出错了?
答案 0 :(得分:0)
我理解问题“db.Entry(post).State = EntityState.Modified;”它只保留视图中的内容,但不确定,因为交换没有任何改变。不得不为你的对象的每个单元格创建一个帖子并更改视图,所有这些都是赚来的。
public ActionResult Edit(int? id, string avtor, string title, string body, string BodyPost, DateTime dateTime, string tags)
{
Posts post = db.Posts.Find(id);
post.Title = title;
post.Body = body;
post.DateTime = dateTime;
post.Tags.Clear();
post.Avtor = avtor;
tags = tags ?? string.Empty;
string[] tagNames = tags.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string tagName in tagNames)
{
post.Tags.Add(GetTag(tagName));
}
db.SaveChanges();
return RedirectToAction("Index");
}
<h5>Title:</h5><input type="text" name="title" value="@Model.Title" /><br />
<h5>Tags:</h5><input type="text" name="tags" value="@ViewBag.Tags" /><br />
<h5>DateTime:</h5><input type="text" name="dateTime" value="@Model.DateTime" /><br />
<h5>Body:</h5><textarea name="body" rows="10" cols="80"> @Model.Body</textarea><br />
<h5>Avtor:</h5><input type="text" name="avtor" value="@Model.Avtor" /><br />