Я не могу понять, почему это не сработает. Я использую ASP.NET MVC2, и я просто пытаюсь переопределить внешний вид редактора по умолчанию, поместив этот код в /Shared/EditorTemplates/String.ascx:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>
<%=Html.TextBox(null, Model, new { @class="Text" }) %>
Затем на моей странице "Вид" у меня есть эта строка типа Int32:
<%: Html.EditorFor(model => model.AppID) %>
По какой-то причине это приводит к ошибке:
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'.
Я не вижу, как что-то может быть неправильно на моем конце, это довольно просто. Почему он пытается использовать редактор для строки, если тип Int32? Я также должен упомянуть, что я переопределил редактор для bool? type (для отображения булевых значений в качестве флажка), и он отлично работает на одной странице.
ИЗМЕНИТЬ
Ну, я много раз искал, но я не видел этого сообщения, пока не нашел его в ссылках "Связанные". Я полагаю, что это сработает, но я все же считаю это запутанной и непоследовательной реализацией, хотя:
Asp.net Mvc Показать шаблон String, но теперь каждый простой тип хочет его использовать!