MVC no puede anular el nombre de EditorTemplate cuando se utiliza en EditorFor para objetos secundarios

Estoy tratando de usar un EditorTemplate para mostrar una colección secundaria en una tabla en la vista de los padres. El problema con el que me he encontrado es que esto solo parece funcionar si la plantilla tiene el mismo nombre que la clase del niño. Cuando intento usar una plantilla con un nombre ligeramente diferente, y paso ese nombre como el argumento templateName a EditorFor, obtengo un error de tiempo de ejecución. Esperaba poder usar diferentes Plantillas de Editor para niños para diferentes propósitos con la misma colección de niños. Aquí hay un ejemplo abreviado:

Modelos:

public class Customer
{
  int id { get; set; }
  public string name { get; set; }

  public List<Order> Orders { get; set; }
}
public class Order
{
    public int id { get; set; }
    public DateTime orderdate { get; set; }
    public decimal amount { get; set; }

    public Customer customer { get; set; }
}

Método del índice del controlador del cliente ():

public ActionResult Index()
{
  Customer customer = new Customer() {id = 1, name = "Acme Corp.", Orders = new List<Order>()};
  customer.Orders.Add(new Order() {id = 1, orderdate = DateTime.Now, amount = 100M});
  customer.Orders.Add(new Order() { id = 2, orderdate = DateTime.Now, amount = 200M });
  return View(customer);
}

Cliente Index.cshtml vista:

@model TemplateTest.Customer

@{
  Layout = null;
}

<!DOCTYPE html>

<html>
<head>
  <meta name="viewport" content="width=device-width" />
  <title>Customer</title>
</head>
<body>
  <div>
      @Html.EditorFor(Model=>Model.name)

      <table>
      <thead>
          <tr>
              <th>Order ID</th>
              <th>Order Date</th>
              <th>Amount</th>
          </tr>
      </thead>
          @Html.EditorFor(Model=>Model.Orders)
      </table>

  </div>
</body>
</html>

Plantilla Order.cshmtl en Views / Shared / EditorTemplates (agregue "color" para verificar que estoy usando esta plantilla):

@model TemplateTest.Order

<tr>
  <td>@Html.DisplayFor(Model=>Model.id)</td>
  <td style="color:blue">@Html.EditorFor(Model=>Model.orderdate)</td>
  <td>@Html.EditorFor(Model=>Model.amount)</td>
</tr>

Esto funciona bien. Pero si cambio el nombre de EditorTemplate a "OrderList.cshtml" y cambio la línea secundaria EditorFor

@Html.EditorFor(Model=>Model.Orders, "OrderList")

cuando lo ejecuto de nuevo me sale esta excepción:

"El elemento del modelo que se pasó al diccionario es del tipo 'System.Collections.Generic.List`1 [TemplateTest.Order]', pero este diccionario requiere un elemento modelo del tipo 'TemplateTest.Order'".

¿Alguna idea de por qué EditorFor no usa la plantilla "OrderList" que especifiqué en el argumento "templateName"? De lo contrario, ¿para qué sirve ese argumento?

Respuestas a la pregunta(1)

Su respuesta a la pregunta