从控制器中的视图中检索多个条目

本文关键字:视图 控制器 检索 | 更新日期: 2023-09-27 18:15:11

这是我的控制器:

public ActionResult Create() {
            Number newNumber = new Number();
        return View(newNumber);
    }

和View:

@model PhoneBook.Models.Number
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
<script src="../../Scripts/jQuery.AddNewNumber.js" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.Contact.Id)
<fieldset>
<legend>Number</legend>
<div class="TargetElements">
    <div class="editor-label">
        @Html.LabelFor(model => model.PhoneNumber)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.PhoneNumber)
        @Html.ValidationMessageFor(model => model.PhoneNumber)
    </div>
    <div class="editor-label">
        @Html.LabelFor(model => model.NumberKind)
    </div>
    <div class="editor-field">
    @Html.DropDownListFor(model => model.NumberKind.Title, NumberKinds)
    </div>
</div>
<p>
    <input class="AddNew" value="Add New" type="button" /></p>
<p>
    <input type="submit" value="Create" />
</p>
</fieldset>
}

按AddNew按钮(使用jQuery AddNewNumber.js)新的输入+下拉框添加到表单在客户端。但是有一个问题在检索值,当我有一个入口元素(包括输入+下拉菜单),我可以检索值像我的控制器后:

[HttpPost]
    public ActionResult Create(Number NewNumber, FormCollection collection) {
            db.Numbers.Add(NewNumber);
            db.SaveChanges();
            return RedirectToAction("Index")
}

但是当有多条目时,我如何检索值并将它们添加到数据库?

从控制器中的视图中检索多个条目

按元素名使用:

string[] PhoneNumbers = collection.GetValues("PhoneNumber");

您希望所有的输入元素都具有相同的名称。然后在POST操作方法中,参数将是List。下面是一个例子:模型绑定到对象列表