我应该在哪里设置Razor的数组大小?

时间:2016-07-03 14:54:19

标签: c# asp.net razor web-applications

我正在尝试为我的模型对象创建一个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>
}

1 个答案:

答案 0 :(得分:1)

您可以使用ComponentOfOrder列表。

List<ComponentOfOrder> mymodel=new List<ComponentOfOrder>();

并以这种方式使用:

mymodel[0].NameOfComponentOfOrder
这是你的问题吗?