复杂对象的自定义 EditorTemplate 采用主对象成员而不是成员对象的成员

Custom EditorTemplate for complex object takes main object members instead of member object's member

我目前正在为一个系统开发一个界面,我遇到了一个对我来说很奇怪的问题。

我有一个 Command class,它看起来像这样:

public class Command
{
    public string Name { get; set; }
    public List<Parameter> Parameters { get; set; }
}

Parameter class 是:

public class Parameter
{
    public string Name { get; set; }
    public string Value { get; set; } 
}

所以我创建了一个视图来在同一页面上编辑命令及其参数。我的 class Parameter(在 Views\Commander\EditorTemplates 中)有一个 EditorTemplate:

@model MyApplication.Models.Parameter

<div class="form-horizontal">
    <div class="form-group">
        @Html.LabelFor(model => model.Name)
        <div class="col-md-10">
            @Html.EditorFor(model => model.Name)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Value)
        <div class="col-md-10">
            @Html.EditorFor(model => model.Value)
        </div>
    </div>
</div>

还有我的 Command 编辑器视图(在 Views\Commander 中):

@model MyApplication.Models.Command

@using (Html.BeginForm())
{
    <div class="form-horizontal">
        <div class="form-group">
            @Html.LabelFor(model => model.Name)
            <div class="col-md-10">
                @Html.EditorFor(model => model.Name)
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Parameters)
            <div class="col-md-10">
                @Html.EditorFor(model => model.Parameters)
            </div>
        </div>
    </div>

    <input type="submit" value="Save"/>
}

我的问题是我的编辑视图采用 Command.Name 值并将其放入 Parameter.Name 字段中。这对某些人来说可能是显而易见的,但我真的不知道是什么原因造成的。有人能给我指出正确的方向吗?

编辑:假设我的命令是RunExe -path C:\FooBar.exe。当我打开此命令的编辑页面时,参数名称编辑字段中没有 path,而是显示 RunExe.

而且我在命令名称编辑中仍然有RunExe,在参数值编辑中有C:\FooBar.exe

我终于设法解决了我的问题。我在为我的成员赋值时遇到了一个错字,它使用了命令的名称而不是参数的名称 -_-'