.Net MVC 表单更新 |创建嵌套对象 EF6

问题描述

我必须解决一个问题。

我有两个对象 Client 和 Translations

public class Client 
{
    [Key]
    public Guid ID;     
    public Guid EventID;    
    public string Email;   
    public virtual IList<Translations> Translations;
    public List<string> Languages;

    public Client(){
        Translations = new List<Translations>();
        Languages = new List<string> (){ "en","fr","es" };
    }
}

public class Translations 
{
    [Key]
    public Guid ID;
    
    [Foreignkey("Client")]
    public Guid ClientID;
    public string FirstName;
    public string LastName;
}

Client 具有通用属性并针对不同语言进行自定义,这些属性存储在 Translations 中。 我需要创建一个包含两种类型字段的表单。

    @Html.HiddenFor(m => m.Client.EventID,new { id = "eventId" })
    <div class="form-group">
        @Html.LabelFor(m => m.Client.Email)
        @Html.EditorFor((m => m.Client.Email,new { htmlAttributes = new { @class = "form-control" } })
    </div>
    <div class="tab-content-wrapper">
        @foreach (var language in Model.Client.Languages) {
          <div id="tab-@language" class="tab-content" style="display:none;">
             @Html.HiddenFor(m => m.Client.Translations.FirstOrDefault(f => f.Language == language).Language,new { id = "TranslationsLanguage" })
             <div class="col-md-6">
                 <div class="form-group">
                      @Html.LabelFor(m => m.Client.Translations.FirstOrDefault(f => f.Language == language).FirstName)
                      @Html.EditorFor((m => m.Client.Translations.FirstOrDefault(f => f.Language == language).FirstName,new { htmlAttributes = new { @class = "form-control" } })
                  </div>
             </div>
             <div class="col-md-6">
                 <div class="form-group">
                      @Html.LabelFor(m => m.Client.Translations.FirstOrDefault(f => f.Language == language).LastName)
                      @Html.EditorFor(m => m.Client.Translations.FirstOrDefault(f => f.Language == language).LastName,new { htmlAttributes = new { @class = "form-control" } })
                  </div>
             </div>
          </div>
        }
   </div>

问题是:在表单提交时传递给 ClientController 的 Client.Translations 列表总是空的。 看起来EF无法绑定它。而且我不能使用像 @foreach (var Translation in Model.Client.Translations) 这样的循环 因为在我添加一些特定于语言的数据之前它是空的。

欢迎任何解决方案。 提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)