C# 基于bool动态添加文本框

C# 基于bool动态添加文本框,c#,jquery,asp.net-mvc,asp.net-mvc-5,C#,Jquery,Asp.net Mvc,Asp.net Mvc 5,Case是一个mvc5应用程序 我有一个班级运动队,看起来像这样: public class Team { public int Id { get; set; } public string TeamName { get; set; } public string Badge { get; set; } public TeamColor? TeamColor { get; set; } public Leag

Case是一个mvc5应用程序

我有一个班级运动队,看起来像这样:

public class Team
    {
        public int Id { get; set; }
        public string TeamName { get; set; }
        public string Badge { get; set; }
        public TeamColor? TeamColor { get; set; }
        public League? League { get; set; }
        public bool HasAlias { get; set; }
        public bool IsAlias { get; set; }
        public int? AliasId { get; set; }
        public virtual Team AliasTeam { get; set; }
        public virtual ICollection<Team> Aliases  { get; set; }
    }
编辑:

通过添加以下js解决了此问题:

$(document).ready(function() {
        $("#HasAlias").change(function () {
            if (this.checked) {
                $(".textboxes").append('<div><input class="form-control text-box single-line" placeholder="enter aliasname" type="text" name="teams"/><a href="#" class="add_field"> <span class=" glyphicon glyphicon-plus-sign"></span></a><a href="#" class="remove_field"> <span class=" glyphicon glyphicon-minus-sign"></span></a></div>');
            } else {
                $(".textboxes").empty();
            }
        });
            $('.textboxes').on("click", ".add_field", function(e) {
                e.preventDefault();
                $(".textboxes").append('<div><input class="form-control text-box single-line" placeholder="enter aliasname" type="text" name="teams"/><a href="#" class="add_field"> <span class=" glyphicon glyphicon-plus-sign"></span></a><a href="#" class="remove_field"> <span class=" glyphicon glyphicon-minus-sign"></span></a></div>');
            });
            $('.textboxes').on("click", ".remove_field", function (e) {
                e.preventDefault(); $(this).parent('div').remove();
            });
        });

我可能误解了整个ViewModel范式。我以为您打算在哪里创建ViewModels,只需要创建结果所需的信息

首先,为什么您的“CreateTeamViewModel”中没有一个“Team”实例?然后您可以在表单中发布该实例-通过模型绑定,您不必在操作中手动填充团队。关于alias文本框的显示,您应该始终将其隐藏在表单中,并根据复选框的值使用javascript使其显示。ToaoG是正确的,默认情况下,模型绑定将为您完成此操作-这就是它的优点,是的,它将处理复杂对象及其复合成员。我建议您使用VS中的自动支架功能,基于CreateTeamViewModel创建一个新视图,我假设该视图反映了基础EF模型。然后看看它产生了什么,并利用回发来了解发生了什么。基本上在这一点上,你是手工编码的东西,大体上是自动的。
$(document).ready(function() {
        $("#HasAlias").change(function () {
            if (this.checked) {
                $(".textboxes").append('<div><input class="form-control text-box single-line" placeholder="enter aliasname" type="text" name="teams"/><a href="#" class="add_field"> <span class=" glyphicon glyphicon-plus-sign"></span></a><a href="#" class="remove_field"> <span class=" glyphicon glyphicon-minus-sign"></span></a></div>');
            } else {
                $(".textboxes").empty();
            }
        });
            $('.textboxes').on("click", ".add_field", function(e) {
                e.preventDefault();
                $(".textboxes").append('<div><input class="form-control text-box single-line" placeholder="enter aliasname" type="text" name="teams"/><a href="#" class="add_field"> <span class=" glyphicon glyphicon-plus-sign"></span></a><a href="#" class="remove_field"> <span class=" glyphicon glyphicon-minus-sign"></span></a></div>');
            });
            $('.textboxes').on("click", ".remove_field", function (e) {
                e.preventDefault(); $(this).parent('div').remove();
            });
        });
public ActionResult CreateTeam(CreateTeamViewModel model, string[] teams)
        {
            if (ModelState.IsValid)
            {
                var team = new Team
                {
                    TeamName = model.TeamName,
                    TeamColor = model.TeamColor,
                    League = model.League,
                    HasAlias = model.HasAlias
                };
                db.Teams.Add(team);
                db.SaveChanges();
                foreach (var s in teams)
                {
                    var t = new Team
                    {
                        TeamName = s,
                        AliasId = team.Id,
                        IsAlias = true
                    };
                    db.Teams.Add(t);
                    db.SaveChanges();
                }


                return RedirectToAction("Index");
            }

            return View(model);
        }