Entity framework 4 使用asp.net mvc和实体框架编辑外键表

Entity framework 4 使用asp.net mvc和实体框架编辑外键表,entity-framework-4,asp.net-mvc-4,foreign-key-relationship,editorfor,Entity Framework 4,Asp.net Mvc 4,Foreign Key Relationship,Editorfor,我有一个实体Kajak: public class Kajak { [HiddenInput(DisplayValue = false)] [Key] public int KajakID { get; set; } public string Name { get; set; } public string Description { get; set; } public virtual I

我有一个实体Kajak:

public class Kajak
    {
        [HiddenInput(DisplayValue = false)]
        [Key]
        public int KajakID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public virtual ICollection<KajakImage> KajakImages { get; set; } 
    }
我想创建一个编辑视图,可以在同一窗口中编辑这两个视图

我真的不知道该怎么办。到目前为止,我已经得出以下结论:

public ViewResult Edit(int kajakID)
    {
        Kajak kajak = _kajakRepository.Kajaks.FirstOrDefault(p => p.KajakID == kajakID);
        return View(kajak);
    }
但我不知道如何创建“editorfor”Kajak图像

@model Timskajakker.Domain.Entities.Kajak
@{
    ViewBag.Title = "Edit";
    Layout = "~/Views/Shared/_AdminLayout.cshtml";
}
<h2>
    Redigér kajak</h2>
@using (Html.BeginForm("Edit", "AdminKajak"))
{
    @Html.LabelFor(model => model.Name)
    @Html.EditorFor(model => model.Name)

    foreach (var kajakImage in Model.KajakImages)
    {
        @Html.EditorFor(model => model.KajakImages.Name) // doesn't work.. what to do here?? 
    }
    <input type="submit" value="Gem" />
    @Html.ActionLink("Fortryd og vend tilbage", "Index")
}
@model Timskajakker.Domain.Entities.Kajak
@{
ViewBag.Title=“编辑”;
Layout=“~/Views/Shared/_AdminLayout.cshtml”;
}
雷迪格尔·卡雅克
@使用(Html.BeginForm(“Edit”、“AdminKajak”))
{
@LabelFor(model=>model.Name)
@EditorFor(model=>model.Name)
foreach(Model.KajakImages中的var-kajakImage)
{
@Html.EditorFor(model=>model.KajakImages.Name)//不工作..在这里做什么??
}
@ActionLink(“Fortryd og vend tilbage”,“Index”)
}
我正在使用asp.NETMVC4和实体框架


我想为Kajak属性创建一个编辑选项,除了所有附加的Kajak图像中的id和name属性

我认为最好的解决方案是创建一个自定义属性。您必须在
视图/YourControllerName
下名为
EditorTemplates
的文件夹中创建名为
KajakImage.cshtml(必须是要渲染的模型的名称)的局部视图文件(或在
共享的
文件夹中):

@model Timskajakker.Domain.Entities.KajakImage
@Html.HiddenFor(model=>model.ImageID)
@LabelFor(model=>model.Name)
@EditorFor(model=>model.Name)
然后在
Kajak
edit视图中使用以下命令渲染此模板:

@使用(Html.BeginForm(“Edit”、“AdminKajak”))
{
@LabelFor(model=>model.Name)
@EditorFor(model=>model.Name)
@EditorFor(model=>model.KajakImages)
@ActionLink(“Fortryd og vend tilbage”,“Index”)
}
您不需要编写
foreach
循环,因为当您传入
KajakImage
s的集合时,ASP.MVC将自动为每个项目渲染一次局部视图

@Html.HiddenFor(model=>model.ImageID)
用于确保在post请求时获得模型绑定器实例化的
KajakImage
对象,这些对象具有正确的原始键值和
名称
属性。(由于视图中没有表单字段,因此
KajakImage
集合的其余属性将无效/为空/
null
。)

@model Timskajakker.Domain.Entities.Kajak
@{
    ViewBag.Title = "Edit";
    Layout = "~/Views/Shared/_AdminLayout.cshtml";
}
<h2>
    Redigér kajak</h2>
@using (Html.BeginForm("Edit", "AdminKajak"))
{
    @Html.LabelFor(model => model.Name)
    @Html.EditorFor(model => model.Name)

    foreach (var kajakImage in Model.KajakImages)
    {
        @Html.EditorFor(model => model.KajakImages.Name) // doesn't work.. what to do here?? 
    }
    <input type="submit" value="Gem" />
    @Html.ActionLink("Fortryd og vend tilbage", "Index")
}