C# 如何首先将带有编辑器模板的复杂属性列表发布到控制器数据库
我必须为家庭作业创建一个notes应用程序,它应该包含一个标签列表作为属性的notes。我生成的Notes对象如下所示:C# 如何首先将带有编辑器模板的复杂属性列表发布到控制器数据库,c#,asp.net-mvc,entity-framework,asp.net-mvc-5,C#,Asp.net Mvc,Entity Framework,Asp.net Mvc 5,我必须为家庭作业创建一个notes应用程序,它应该包含一个标签列表作为属性的notes。我生成的Notes对象如下所示: public partial class Note { public Note() { this.Tags = new HashSet<Tag>(); } public int Id { get; set; } public string Title { get; set; } public str
public partial class Note
{
public Note()
{
this.Tags = new HashSet<Tag>();
}
public int Id { get; set; }
public string Title { get; set; }
public string Text { get; set; }
public string Author { get; set; }
public string Mail { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
}
公共部分类注释
{
公共说明()
{
this.Tags=newhashset();
}
公共int Id{get;set;}
公共字符串标题{get;set;}
公共字符串文本{get;set;}
公共字符串作者{get;set;}
公共字符串邮件{get;set;}
公共虚拟ICollection标记{get;set;}
}
我还有一个生成的标记对象:
public partial class Tag
{
public Tag()
{
this.Notes = new HashSet<Note>();
}
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Note> Notes { get; set; }
}
公共部分类标记
{
公共标签()
{
this.Notes=new HashSet();
}
公共int Id{get;set;}
公共字符串名称{get;set;}
公共虚拟ICollection注释{get;set;}
}
这是通过多对多关系完成的,我没有NoteTags的实体,只有一个数据库表。
现在,我如何让用户能够编辑注释的标记?
例如,我已经尝试了很多方法,但对我来说不起作用,因为我必须编辑生成的模型
Idk如果这有助于了解我的情况,下面是我的editortemplate tag.cshtml:
@model IEnumerable<CRUDApp.Models.Tag>
@foreach (var item in Model)
{
@Html.EditorFor(modelItem => item.Name)<br />
}
@model IEnumerable
@foreach(模型中的var项目)
{
@Html.EditorFor(modeleItem=>item.Name)
}
每当我在编辑模式下发布表单时,Note对象中的标记都将为空。假设您希望动态添加/删除“Note”中的
Tag
,请参考答案和一些选项,并且您不能使用foreach
循环为集合生成表单控件。对于循环,您需要,对于标记的类型,您需要自定义编辑器或模板
-有关更多解释,请参阅每当我尝试通过索引器访问标记时,我都会收到一个错误,即这是不可能的。是否有解决方法?因为您的集合属性需要实现IList
-一如既往,请使用视图模型。