Asp.net 如何将模型的多个实例以表单形式传递给控制器
我正在建立一个asp.net表单,它收集5台发电机的读数 这是每个发电机的型号Asp.net 如何将模型的多个实例以表单形式传递给控制器,asp.net,Asp.net,我正在建立一个asp.net表单,它收集5台发电机的读数 这是每个发电机的型号 public class GeneratorModel { public int Id { get; set; } public String Name { get; set; } public float Belasting { get; set; } public float MaxBelasting { get; set; } public float KoudeRes
public class GeneratorModel
{
public int Id { get; set; }
public String Name { get; set; }
public float Belasting { get; set; }
public float MaxBelasting { get; set; }
public float KoudeReserve { get; set; }
}
这是我目前的看法
@model XX.Models.GeneratorModel
@{
ViewBag.Title = "Data Entry";
}
@using (Html.BeginForm("Index", "DataEntry", FormMethod.Post))
{
<table>
<tr>Generator 1</tr>
<tr>
<td>Enter Belasting: </td>
<td>@Html.TextBoxFor(m => m.Belasting)</td>
</tr>
<tr>
<td>Enter Max Belasting: </td>
<td>@Html.TextBoxFor(m => m.MaxBelasting)</td>
</tr>
<tr>
<td>Koude Reserve: </td>
<td>@Html.TextBoxFor(m => m.KoudeReserve)</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Submit Form" /></td>
</tr>
</table>
}
目前我只能输入1个生成器的值,但我需要读取5个生成器的读数
有没有办法在控制器操作结果中获取GeneratorModel对象数组作为参数?您可以这样尝试:
<table class="col-md-offset-2 table table-bordered">
<thead>
<tr>
<th>Name</th>
<th>Belasting</th>
<th>Max Belasting</th>
<th>Koude Reserve</th>
<th></th>
</tr>
</thead>
<tbody id="GenaratorList">
<tr>
<td>@Html.TextBoxFor(m => m.Name)</td>
<td>@Html.TextBoxFor(m => m.Belasting)</td>
<td>@Html.TextBoxFor(m => m.MaxBelasting)</td>
<td>@Html.TextBoxFor(m => m.KoudeReserve)</td>
<td><input type="button" value="Add" onclick="addGenarator()"/></td>
</tr>
</tbody>
</table>
<input type="submit" value="Submit Form" />
然后添加一些javascript,以便在每次单击“添加”时追加新行,并仅在添加了Generator所需的行数后单击“提交”。
将控制器更改为:
[HttpPost]
public ActionResult Index(List<GeneratorModel> generatorModels)
{
return Content("Hello");
}
以及用于追加新表行的JS:
<script>
count=0;
function addGenarator() {
var name = $('#Manifest_Quantity').val();
var belasting= $('#Belasting').val();
var mxBelasting= $('#MaxBelasting').val()
var reserve= $('#KoudeReserve').val();
var generator= "generatorModels[" + count + "]";
$('#GenaratorList').append('<tr><td><input id="' + generator + '.Name" name="' + generator + '.Name" type="text" class="form-control" readonly value="' + name + '"></td><td><input id="' + generator + '.Belasting" name="' + generator + '.Belasting" type="text" class="form-control" readonly value="' + belasting + '"></td><td><input id="' + generator + '.MaxBelasting" name="' + generator + '.MaxBelasting" type="text" class="form-control" readonly value="' + mxBelasting + '"></td><td><input id="' + generator + '.KoudeReserve" name="' + generator + '.KoudeReserve" type="text" class="form-control" readonly value="' + reserve + '"></td></tr>');
$('#Name,#Belasting,#MaxBelasting,#KoudeReserve').val('');
count++;
}
</script>
您可以这样尝试:
<table class="col-md-offset-2 table table-bordered">
<thead>
<tr>
<th>Name</th>
<th>Belasting</th>
<th>Max Belasting</th>
<th>Koude Reserve</th>
<th></th>
</tr>
</thead>
<tbody id="GenaratorList">
<tr>
<td>@Html.TextBoxFor(m => m.Name)</td>
<td>@Html.TextBoxFor(m => m.Belasting)</td>
<td>@Html.TextBoxFor(m => m.MaxBelasting)</td>
<td>@Html.TextBoxFor(m => m.KoudeReserve)</td>
<td><input type="button" value="Add" onclick="addGenarator()"/></td>
</tr>
</tbody>
</table>
<input type="submit" value="Submit Form" />
然后添加一些javascript,以便在每次单击“添加”时追加新行,并仅在添加了Generator所需的行数后单击“提交”。
将控制器更改为:
[HttpPost]
public ActionResult Index(List<GeneratorModel> generatorModels)
{
return Content("Hello");
}
以及用于追加新表行的JS:
<script>
count=0;
function addGenarator() {
var name = $('#Manifest_Quantity').val();
var belasting= $('#Belasting').val();
var mxBelasting= $('#MaxBelasting').val()
var reserve= $('#KoudeReserve').val();
var generator= "generatorModels[" + count + "]";
$('#GenaratorList').append('<tr><td><input id="' + generator + '.Name" name="' + generator + '.Name" type="text" class="form-control" readonly value="' + name + '"></td><td><input id="' + generator + '.Belasting" name="' + generator + '.Belasting" type="text" class="form-control" readonly value="' + belasting + '"></td><td><input id="' + generator + '.MaxBelasting" name="' + generator + '.MaxBelasting" type="text" class="form-control" readonly value="' + mxBelasting + '"></td><td><input id="' + generator + '.KoudeReserve" name="' + generator + '.KoudeReserve" type="text" class="form-control" readonly value="' + reserve + '"></td></tr>');
$('#Name,#Belasting,#MaxBelasting,#KoudeReserve').val('');
count++;
}
</script>
如果您明天需要读取6台发电机或7台发电机的读数,该怎么办?您是否会继续为每个新生成器在同一页上添加输入字段?理想情况下,您应该有一个包含表中所有生成器的页面,并且每个表行都应该有编辑和删除按钮。在表格的顶部应该有一个创建按钮,它会将您重定向到一个新的生成器窗体,您可以从该窗体创建一个新的生成器。如果您明天需要读取6个生成器或7个生成器,该怎么办?您是否会继续为每个新生成器在同一页上添加输入字段?理想情况下,您应该有一个包含表中所有生成器的页面,并且每个表行都应该有编辑和删除按钮。在表的顶部应该有一个create按钮,它会将您重定向到一个新的生成器窗体,您可以从该窗体创建一个新的生成器