tutorial que net mvc microsoft espaƱol asp asp.net-mvc-2

asp.net mvc 2 - net - EditorFor: el elemento de modelo que se pasa al diccionario es del tipo ''System.Int32'', pero este diccionario requiere un elemento de modelo de tipo ''System.String''



microsoft asp.net mvc 2 que es (4)

En su plantilla de editor le ha dicho que espere una ViewUserControl<string> pero está pasando un int a su EditorFor .

Como la plantilla del editor está esperando una string , y está pasando un int , no funcionará.

Parece que no puedo entender por qué esto no funcionaría. Estoy usando ASP.NET MVC2 y simplemente estoy tratando de anular la apariencia predeterminada del editor colocando este código en /Shared/EditorTemplates/String.ascx:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %> <%=Html.TextBox(null, Model, new { @class="Text" }) %>

Luego, en mi página Ver, tengo esta línea que es de tipo Int32:

<%: Html.EditorFor(model => model.AppID) %>

Por alguna razón, esto produce el error:

System.InvalidOperationException: The model item passed into the dictionary is of type ''System.Int32'', but this dictionary requires a model item of type ''System.String''.

No veo cómo algo podría estar mal en mi extremo, es bastante simple. ¿Por qué trata de usar el editor para una cadena si el tipo es un Int32? También debo mencionar que he anulado al Editor por un bool? escriba (para representar valores booleanos como una casilla de verificación) y funciona perfectamente en la misma página.

EDITAR

Bueno, busqué muchas veces, pero no vi esta publicación hasta que la encontré en los enlaces "Relacionados". Supongo que esto funcionará, pero creo que es una implementación confusa e inconsistente:

Asp.net Mvc Muestra la plantilla de String, pero ahora todos los tipos simples quieren usarla.


Acabo de encontrar este error, pero con un DateTime. Pude hacer que las cosas funcionen nuevamente al cambiar la plantilla del editor para usar Object como su tipo de modelo.


en kendo ui Grid do:

public class BookBean { [ScaffoldColumn(false)] public Int32 Id { set; get; } public String Title { set; get; } public String Author { set; get; } public String Publisher { set; get; } [UIHint("Integer")] public Int32 Price { set; get; } [UIHint("Integer")] public Int32 Instore { set; get; } [UIHint("Integer")] public Int32 GroupId { get; set; } }

en Integer.ascx en la carpeta Shared / EditorTemplate do:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<int?>" %> <%: Html.Kendo().IntegerTextBoxFor(m => m) .HtmlAttributes(new { style = "width:100%" }) .Min(int.MinValue) .Max(int.MaxValue) %>


Me enfrenté al mismo problema con el campo Int16 aunque tengo una plantilla Integer en el proyecto, así que tuve que crear una plantilla específica para Int16 FileName: Int16.cshtml Html:

@model Int16? @Html.TextBoxFor(model => model)