我正在尝试为我的模型对象创建一个Create页面。我想要创建的对象具有“一对多”关系。所以现在我想为它添加多个字段。我找到了这个答案: MVC "create view" when there is one to many relationship in model 问题是我应该至少有10个额外的字段。或者在最好的情况下,我应该有可能手动设置他们的金额。所以我决定使用一个数组。但是在C#中我无法在模型中设置它的大小,因为数组是动态的。
问题是: 我在哪里可以设置数组大小,以便Razor知道要创建多少个字段。
以下是我的模特:
public class OrderCreateView
{
//Other fields
public ComponentOfOrder[] ComponentOfOrders { get; set; }
}
public class ComponentOfOrder
{
public string NameOfComponentOfOrder { get; set; }
}
以下是我的Controller用于创建页面的方法:
public ActionResult Create()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "anotherStuff,ComponentOfOrders")] OrderCreateView orderCreateView)
{
if (ModelState.IsValid)
{
Order order = new Order
{
//Another fields
};
db.Orders.Add(order);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(orderCreateView);
}
我的剃刀页面:
@model Safronov.Models.OrderCreateView
@{
ViewBag.Title = "Create";
//Model.ComponentOfOrders = new Safronov.Models.OrdersDB.ComponentOfOrder[10];
//here it doesn't work with error message "Object reference does not point to an instance of an object"
}
some stuff on page
@foreach (var component in Model.ComponentOfOrders)
{
<div class="form-group">
@Html.LabelFor(x => component.NameOfComponentOfOrder, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(x => component.NameOfComponentOfOrder, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(x => component.NameOfComponentOfOrder, "", new { @class = "text-danger" })
</div>
</div>
}
答案 0 :(得分:1)
您可以使用ComponentOfOrder列表。
List<ComponentOfOrder> mymodel=new List<ComponentOfOrder>();
并以这种方式使用:
mymodel[0].NameOfComponentOfOrder
这是你的问题吗?