ASP.NET MVC Display Template para cadenas se usa para enteros

Recientemente tuve un problema con las plantillas de visualización ASP.NET MVC. Digamos que este es mi modelo:

public class Model
{
    public int ID { get; set; }
    public string Name { get; set; }
}

este es el controlador:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new Model());
    }
}

y esta es mi opinión:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<DisplayTemplateWoes.Models.Model>" %>

<!DOCTYPE html>

<html>
<head runat="server">
    <title>Index</title>
</head>
<body>
    <div>
        <%: Html.DisplayForModel() %>
    </div>
</body>
</html>

Si por alguna razón necesito una plantilla de visualización para todas las cadenas, crearé una vista parcial de String.ascx como esta:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>

<%: Model %> (<%: Model.Length %>)

Y aquí está el problema: en tiempo de ejecución se genera la siguiente excepción: "El elemento modelo pasado al diccionario es del tipo 'System.Int32', pero este diccionario requiere un elemento modelo del tipo 'System.String'"

Parece que String.ascx se usa tanto para el entero como para la propiedad de cadena de la clase Modelo. Esperaba que se usara solo para la propiedad de cadena; después de todo, se llama String.ascx, no Object.ascx o Int32.ascx.

¿Es esto por diseño? En caso afirmativo, ¿está documentado en alguna parte? Si no, ¿puede considerarse un error?

Respuestas a la pregunta(1)

Su respuesta a la pregunta