【问题标题】:ASP.NET Entity Manager: create more than one entity in a viewASP.NET 实体管理器:在一个视图中创建多个实体
【发布时间】:2013-11-25 23:02:59
【问题描述】:

我想创建一个创建视图,您可以在其中输入多个实体的值 - “实体列表” 例如实体类

public class MyEntity{
public string myAttribute { get; set; }
}

对于视图,我创建了一个如下所示的 ModelView:

public class MoreEntites{
public List<MyEntity> MyEntities { get; set; }
}

在视图中,我想使用 MoreEntities 让用户可以在一个视图中输入更多的数据集(我的建议当然不起作用)

@model myproject.ViewModels.MoreEntities
 ...
<div class="editor-label">
     @Html.LabelFor(model => model.MyEntities.ElementAt(0).MyAttribute)
</div>
<div class="editor-field">
     @Html.EditorFor(model => model.MyEntities.ElementAt(0).MyAttribute)
     @Html.ValidationMessageFor(model => model.MyEntities.ElementAt(0).MyAttribute)
</div>
<div class="editor-label">
     @Html.LabelFor(model => model.MyEntities.ElementAt(1).MyAttribute)
</div>
<div class="editor-field">
     @Html.EditorFor(model => model.MyEntities.ElementAt(1).MyAttribute)
     @Html.ValidationMessageFor(model => model.MyEntities.ElementAt(1).MyAttribute)
</div>
...

现在在控制器中,我想遍历列表并在数据库中写入 MyEntities 的每一项。当我运行程序时,我得到一个异常,我的 List 为空,我应该在使用它之前检查它是否为空。 这可能吗?它是如何工作的?一个“解决方案”是创建一个数组,但在这种情况下,我的程序将是可扩展的。 感谢您的帮助!

【问题讨论】:

  • 你能包含你的控制器方法代码吗?
  • 不起作用,因为List此时不是实例列表,如果要更新它是

标签: c# asp.net asp.net-mvc-4


【解决方案1】:

适用于实体的 Array[]!!!! 解决方案: 型号:

public class MyEntity{
public string MyAttribute { get; set; }
}

视图模型:

public class MoreEntites{
public MyEntity[] MyEntities { get; set; }
}

查看:

@model myproject.ViewModels.MoreEntities
 ...
<div class="editor-label">
     @Html.LabelFor(model => model.MyEntities[0].MyAttribute)
</div>
<div class="editor-field">
     @Html.EditorFor(model => model.MyEntities.[0].MyAttribute)
     @Html.ValidationMessageFor(model => model.MyEntities[0].MyAttribute)
</div>
<div class="editor-label">
     @Html.LabelFor(model => model.MyEntities[1].MyAttribute)
</div>
<div class="editor-field">
     @Html.EditorFor(model => model.MyEntities[1].MyAttribute)
     @Html.ValidationMessageFor(model => model.MyEntities[1].MyAttribute)
</div>
...

控制器:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateMoreEntitiesAtOnce(MoreEntities set)
{
    foreach(var item in set.MyEntities) 
    {
        db.MyEntity.Add(item);
    }

    db.SaveChanges();

    return RedirectToAction("Index");
}

在我的情况下,如果必须尝试是否可以通过 JavaScript 向视图添加更多文本框 因此,在将文本框添加到 DOM 时,您需要在纯 html 中增加文本框的名称

【讨论】:

  • CreateMoreEntitiesAtOnce(MyEntities set) MyEntities?和Choice[] ?
  • 只是我原始代码的一部分,抱歉用 MyEntities 替换它
猜你喜欢
  • 2013-04-14
  • 1970-01-01
  • 1970-01-01
  • 2016-12-19
  • 2019-11-23
  • 1970-01-01
  • 2014-01-28
  • 2011-09-29
  • 1970-01-01
相关资源
最近更新 更多