Nie mogę się domyślić, dlaczego to nie zadziała. Używam ASP.NET MVC2 a ja po prostu próbuje nadpisać wygląd domyślny edytor umieszczając ten kod na /Shared/EditorTemplates/String.ascx:EditorFor - Element modelu przekazany do słownika ma typ "System.Int32", ale ten słownik wymaga elementu modelu typu "System.String"
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>
<%=Html.TextBox(null, Model, new { @class="Text" }) %>
Wtedy moim zdaniem strony, mam to linia, która jest typu Int32:
<%: Html.EditorFor(model => model.AppID) %>
z jakiegoś powodu, to powoduje błąd:
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'.
nie widzę, jak coś może być nie tak w moim końcu, to całkiem proste. Dlaczego próbuje użyć edytora do napisu, jeśli typ to Int32? Powinienem też wspomnieć, że zastąpiłem Redaktora boolem? type (do wyświetlania wartości logicznych jako checkbox) i działa dobrze na tej samej stronie.
EDIT
Dobrze Szukałem wiele razy, ale nie widzę tego posta aż znalazłem go w „pokrewne” linki. Przypuszczam, że to będzie działać, nadal uważam, że jest to mylące i niespójne wdrażanie choć:
Asp.net Mvc Display template of String, but now every simple type wants to use it!
OK, myślę, że to jest myląca część dla mnie. Myślałem, że użył refleksji, aby wybrać poprawny szablon edytora. Czy tak nie jest? Jak powiedziałem, mam bool? szablon i poprawnie renderuje wartości logiczne - nie wywołuje szablonu łańcucha. – user949286
Czy masz osobny szablon int? –
Nie, nie mam. Nie sądzę, że będę go potrzebować, bo najpierw stworzyłem bool? szablon i wszystko nadal działało. Następnie utworzyłem szablon łańcucha i wystąpił ten błąd. Może powinienem po prostu utworzyć szablon int, ale mogę mieć wiele innych typów i chciałbym, aby używał domyślnego szablonu dla nich, więc nie muszę generować niepotrzebnych zbędnych szablonów. – user949286