Asp.net mvc 3 Mvc3 listboxfor helper方法在编辑实体时选择的项
我正在使用razor开发一个asp.net mvc3演示应用程序,该应用程序位于 我有mvc脚手架,Poco对象作为实体,mvc脚手架正在运行Asp.net mvc 3 Mvc3 listboxfor helper方法在编辑实体时选择的项,asp.net-mvc-3,html-helper,Asp.net Mvc 3,Html Helper,我正在使用razor开发一个asp.net mvc3演示应用程序,该应用程序位于 我有mvc脚手架,Poco对象作为实体,mvc脚手架正在运行 public class Project { public int ProjectId { get; set; } [Required(ErrorMessage="please enter name")] public string Name { get; set; } public string Url { get; s
public class Project
{
public int ProjectId { get; set; }
[Required(ErrorMessage="please enter name")]
public string Name { get; set; }
public string Url { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime UpdatedOn { get; set; }
public bool isFeatured { get; set; }
public bool isDisabled { get; set; }
public int GroupId { get; set; }
public virtual Group Group { get; set; }
[Required(ErrorMessage="Please select atleast one tag")]
public virtual ICollection<Tag> Tags { get; set; }
}
public class Tag
{
public int TagId { get; set; }
public string Name { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime UpdatedOn { get; set; }
public virtual ICollection<Project> Projects { get; set; }
}
public class Group
{
public int GroupId { get; set; }
public string Name { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime UpdatedOn { get; set; }
public virtual ICollection<Project> Projects { get; set; }
}
公共类项目
{
公共int ProjectId{get;set;}
[必需(ErrorMessage=“请输入名称”)]
公共字符串名称{get;set;}
公共字符串Url{get;set;}
public DateTime CreatedOn{get;set;}
public DateTime UpdatedOn{get;set;}
公共布尔值为{get;set;}
公共布尔被禁用{get;set;}
public int GroupId{get;set;}
公共虚拟组{get;set;}
[必需(ErrorMessage=“请至少选择一个标记”)]
公共虚拟ICollection标记{get;set;}
}
公共类标签
{
public int TagId{get;set;}
公共字符串名称{get;set;}
public DateTime CreatedOn{get;set;}
public DateTime UpdatedOn{get;set;}
公共虚拟ICollection项目{get;set;}
}
公共课组
{
public int GroupId{get;set;}
公共字符串名称{get;set;}
public DateTime CreatedOn{get;set;}
public DateTime UpdatedOn{get;set;}
公共虚拟ICollection项目{get;set;}
}
第一个问题
从上面的代码中可以看出,项目和标记实体之间存在多对多关系。
现在我有办法实现一个新的项目特性,其中一个bug是标记为所需的项目的标记属性,但如果您不选择任何标记,则客户端站点验证将不起作用
第二个问题
一旦使用多个标记创建了项目,如果您决定对其进行编辑,如何显示与项目关联的选定标记
您可以在以下位置找到完整的源代码:
我已经成功地进行了验证,现在在编辑项目时,标签被选中 但现在我遇到了另一个问题,比如说我创建了一个带有标记“asp.net”的新项目,然后我编辑了这个项目,只选择了一个标记“wordpress”。现在,如果我发布表单模型绑定工作,但我的上下文无法更新项目的标记集合属性?在我看来,当It为我的项目实体找到一个复杂的类型属性时,It实体框架在这里会出现问题吗
public void InsertOrUpdate(Project project)
{
if (project.ProjectId == default(int)) {
// New entity
foreach (var tag in project.Tags)
{
context.Entry(tag).State = EntityState.Unchanged;
}
context.Projects.Add(project);
}
else {
// Existing entity
//every property of project entity is
//getting updated only tags property left out :(
context.Entry(project).State = EntityState.Modified;
}
}
我已经设法使验证工作和标签现在得到选择,而编辑一个项目 但现在我遇到了另一个问题,比如说我创建了一个带有标记“asp.net”的新项目,然后我编辑了这个项目,只选择了一个标记“wordpress”。现在,如果我发布表单模型绑定工作,但我的上下文无法更新项目的标记集合属性?在我看来,当It为我的项目实体找到一个复杂的类型属性时,It实体框架在这里会出现问题吗
public void InsertOrUpdate(Project project)
{
if (project.ProjectId == default(int)) {
// New entity
foreach (var tag in project.Tags)
{
context.Entry(tag).State = EntityState.Unchanged;
}
context.Projects.Add(project);
}
else {
// Existing entity
//every property of project entity is
//getting updated only tags property left out :(
context.Entry(project).State = EntityState.Modified;
}
}