创建视图以捕获多对多关系时遇到问题。
以下是模型......
我要为其创建视图的模型...
public class Service : Entity
{
[ForeignKey("ServiceType")]
public int ServiceTypeId { get; set; }
[Required]
public string ProviderAccountName { get; set; }
public virtual ServiceType ServiceType { get; set; }
public virtual ICollection<Parameter> Parameters { get; set; }// this thing right here I want to capture many Parameters dynamically added by the user
public Service()
{
this.Parameters = new List<Parameter>();
}
}
现在真正的问题是参数本身有自己的CRUD操作视图,并将从那里创建。我只想将参数绑定到正在创建的Service实体,如果我们给出了一个列出了所有参数的表,并且复选框允许用户检查他想要包含的参数,那将会容易得多。但是在我的情况下,用户必须单击添加链接,生成新参数行并应用Select2自动完成,其中可以选择该参数。 我想知道我是否可以使用BeginCollectionItem但是我无法弄清楚如何这样做,因为当我尝试时,它给了我Paramater中必需字段的ModelErrors,好像它正在创建要插入DB的新参数... < / p>
编辑器的部分视图如下......
@using (Html.BeginCollectionItem("Parameters"))
{
<div style="width: 100%;">
@Html.TextBoxFor(m => m.CategoryID, new { @class = "ParamCategoryId" })
<span> </span>
@Html.TextBoxFor(m => m.ID, new { @class = "ParamId" })
<span> </span>
<span id="paramDesc"></span>
<span> </span>
</div>
}
我猜BeginCollectionItem在这里没有帮助我,另外我面临的问题很多,因为我们可以看到我正在使用select2插件,已经使用类将它应用于元素,这是不行的正如预期的那样,每当生成一个新行时,所有上面的行值都会重置为空白,因为“初始化”和“初始化”。被触发。
有没有更好的方法来做到这一点,我觉得可能最终使事情变得复杂...... ???