MVC EditorTemplate绑定不适用于同一页面中的2个元素

我的页面并排显示到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,则它对两个数组都适用。

它看起来像是一个框架错误,但是这种情况不是典型的。 什么会在这里失败?

hejunyan2010 回答:MVC EditorTemplate绑定不适用于同一页面中的2个元素

从编辑器模板中删除@using (Html.BeginForm())

本文链接:https://www.f2er.com/3151508.html

大家都在问