微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决.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 举报,一经查实,本站将立刻删除。