如何使用 EF 将子项添加到 MVC 4 中的父记录?
我有一个显示新闻的网格。我需要添加作为这些子记录的更新。一个数据库表有新闻,另一个有更新。它们由每个表中的 NewsID 链接。
新闻模型
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int NewsId { get; set; }
public string Body { get; set; }
//other fields
更新模型
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int NewsUpdateId { get; set; }
public int NewsId { get; set; }
public string Body { get; set; }
//other fields
新闻索引视图(此处仅发布了部分内容;这是一个显示这些详细信息行的网格)
@foreach (var item in Model) {
<tr>
<td>@Html.ActionLink(item.Headline, "Details", new { id=item.NewsId })</td>
<td>@Html.Raw(item.Body.Remove(300))...</td>
//other fields
<td>@Html.ActionLink("Edit", "Edit", new { id=item.NewsId })</td>
//WOULD LIKE ANOTHER LINK GOING TO "UPDATE" SCREEN TO ADD CHILD UPDATES, PASSING IN THE PARENT ID
</tr>
}
控制器(现在)
public ActionResult Update()
{
return View();
}
但是当然,当我在那个更新屏幕上保存时,没有 NewsID 可以保存到更新中并且它失败了。如何将 NewsID 从索引屏幕/网格传递到我的“创建更新”屏幕,然后在更新屏幕上检索它并将其添加到我的保存操作中?
更新由于没有人知道如何做到这一点,我正在弥补,因为我没有运气。
我尝试过使用 NewsUpdate 屏幕,例如传递 id 值的编辑。不同之处在于,对于 Edit,您正在编辑该记录。对于这个 NewsUpdate,我添加了一个 NewsUpdate,它是 News 的子记录,所以我有现有的 NewsID,需要将它传递到我的 NewsUpdate 屏幕并最终使用它来设置 NewsUpdate.NewsID。
当我保存 NewsUpdate 屏幕时,模型无效,因为它丢失了,所以我尝试这样设置它:
var NewsID = Request.Url.PathAndQuery.ToString(); //grab it from url News/Update/8
NewsID = NewsID.Replace("/News/Update/", ""); //results in NewsID = 8
NewsUpdate.NewsID = Convert.ToInt32(NewsID);
这有效,但在此之后模型仍然无效。所以这不好。