2013-06-29 4 views
1

У меня есть следующий код на мой взгляд:Html.TextBoxFor работает, но EditorFor вызывает ошибку - почему?

@model MyDomain.ViewModels.EditCapacityViewModel 

`....

@Html.EditorFor<Capacity, >(m => m.Capacity.NumberOfWeeks) 

Это мой ViewModel - прямо пройти к моей модели класса

public class EditCapacityViewModel 
    { 
     public Capacity Capacity { get; set; } 
    } 

Мои Класс мощности модели:

[Display(Name="Number of Weeks")] 
[DataType(DataType.Date)] 
public virtual int NumberOfWeeks { get; set; } 

Используя приведенный выше код, я получаю ошибку: Элемент модели, переданный в словарь, имеет тип «System.Int32», но для этого словаря требуется элемент модели типа «System.String».

Если я конвертирую EditorFor в TextBoxFor, он работает.

Я понятия не имею, почему это не работает. Что я делаю не так?

ответ

1

EditorFor работает только для строк без специального шаблона.

Чтобы сделать эту работу, вам необходимо создать шаблон Int32 по пути ~/Views/Shared/EditorTemplates/Int32.cshtml.

Если вы не хотите создавать шаблон для Int32, используйте TextBoxFor, который будет работать так, как вы уже поняли.

+0

Извините, моя ошибка в исходном вопросе. Да, у меня есть код, который вы выделили, и я все еще получаю сообщение об ошибке. В DataType было некоторое тестирование. Я хочу, чтобы это было int. – Urkel

+0

@Urkel: почему 'NumberOfWeeks' является типом даты? Для меня это не имеет смысла. Не могли бы вы объяснить, что вы пытались сделать? –

+0

Нет, NumberOfWeeks - тип int. – Urkel

Смежные вопросы