Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET实体管理器:在视图中创建多个实体_C#_Asp.net_Asp.net Mvc 4 - Fatal编程技术网

C# ASP.NET实体管理器:在视图中创建多个实体

C# ASP.NET实体管理器:在视图中创建多个实体,c#,asp.net,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc 4,我想创建一个创建视图,您可以在其中输入多个实体的值-“实体列表” e、 g.实体类别 public class MyEntity{ public string myAttribute { get; set; } } 对于视图,我创建了一个ModelView,如下所示: public class MoreEntites{ public List<MyEntity> MyEntities { get; set; } } 公共类morentites{ 公共列表MyEntities{ge

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

public class MyEntity{
public string myAttribute { get; set; }
}
对于视图,我创建了一个ModelView,如下所示:

public class MoreEntites{
public List<MyEntity> MyEntities { get; set; }
}
公共类morentites{
公共列表MyEntities{get;set;}
}
在视图中,我想使用更多的实体,让用户有可能在一个视图中输入更多的数据集(我的建议当然行不通)

@model myproject.ViewModels.MoreEntities
...
@LabelFor(model=>model.MyEntities.ElementAt(0.MyAttribute)
@EditorFor(model=>model.MyEntities.ElementAt(0.MyAttribute)
@Html.ValidationMessageFor(model=>model.MyEntities.ElementAt(0.MyAttribute)
@LabelFor(model=>model.MyEntities.ElementAt(1.MyAttribute)
@EditorFor(model=>model.MyEntities.ElementAt(1.MyAttribute)
@Html.ValidationMessageFor(model=>model.MyEntities.ElementAt(1.MyAttribute)
...
现在在控制器中,我想迭代列表,并在数据库中写入MyEntities的每一项。当我运行程序时,我得到一个异常,我的列表为空,我应该在使用它之前检查它是否为空。 这可能吗?它是如何工作的?一个“解决方案”是创建一个数组,但在这种情况下,我的程序是可伸缩的。
谢谢你的帮助

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

视图模型:

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>
...
在我的例子中,如果可能的话,我必须尝试通过JavaScript向视图中添加更多的文本框
因此,在将文本框添加到DOM中时,您需要以普通html增加文本框的名称

是否可以包含控制器方法代码?可能的重复项不起作用,因为此时列表不是实例列表,如果要更新它,则为
CreateMoreEntitiesAtence(MyEntities set)
只是我原始代码的一部分,很抱歉用MyEntities替换了它
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");
}