我的页面并排显示到ExternalExeWorkerSettings
类的对象数组中。
为了渲染对象,我为“ ExternalExeWorkerSettings”创建了一个编辑器模板。
在页面上正确地填充了两个数组中的元素。
保存页面时,仅捕获第一个数组中的元素。第二个数组具有创建的所有'ExternalExeWorkerSettings'实例,但所有实例均具有默认状态。第二个数组的任何实例都没有捕获ExternalExeWorkerSettings
的属性。
显示代码的相关部分:
查看(页面)
@for (int i = 0; i < Model.Count(); i++)
{
//Left Array (SettingsViewModelPRD)
@Html.EditorFor(model => Model[i].SettingsViewModelPRD,null,"activityList[" + @i + "].SettingsViewModelPRD",new { htmlAttributes = new { @class = "editSettings" } })
@Html.ValidationmessageFor(model => model[i].SettingsViewModelPRD,"",new { @class = "text-danger" })
//Right Array (SettingsViewModelTST)
@Html.EditorFor(model => Model[i].SettingsViewModelTST,"activityList[" + @i + "].SettingsViewModelTST")
@Html.ValidationmessageFor(model => model[i].SettingsViewModelTST,new { @class = "text-danger" })
}
EditorTemplate (ExternalExeWorkerSettings.cshtml)
@model act_Workers.Workers.ExternalExeWorkerSettings
@using (html.beginform())
{
<div class="form-horizontal">
<div class="activity-box">
<strong>External Exe</strong>
<hr />
@Html.ValidationSummary(true,new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.exeName,htmlAttributes: new { @class = "control-label" })
<div class="activty-textbox">
@Html.EditorFor(model => model.exeName,new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationmessageFor(model => model.exeName,new { @class = "text-danger" })
</div>
</div>
...
编辑器模板中呈现的html
//SettingsViewModelPRD
<input class="form-control text-box single-line" data-val="true" data-val-maxlength="Max size exceeded" data-val-maxlength-max="255" data-val-minlength="Field is required" data-val-minlength-min="1" data-val-required="The Nome do Executável field is required." id="activityList_0__SettingsViewModelPRD_exeName" name="activityList[0].SettingsViewModelPRD.exeName" type="text" value="">
//SettingsViewModelTST
//the attribute name is good and the value is correctly populated
<input class="form-control text-box single-line" data-val="true" data-val-maxlength="Max size exceeded" data-val-maxlength-max="255" data-val-minlength="Field is required" data-val-minlength-min="1" data-val-required="The Nome do Executável field is required." id="activityList_0__SettingsViewModelPRD_exeName"name="activityList[0].SettingsViewModelPRD.exeName" type="text" value="something">
但是,在控制器上,SettingsViewModelTST
数组的每个对象的所有属性都设置为null。正确填充了SettingsViewModelPRD数组。
更奇怪的是,如果我删除了Editor模板,让我自己生成html,则它对两个数组都适用。
它看起来像是一个框架错误,但是这种情况不是典型的。 什么会在这里失败?