Html.TextBoxFor有效,但EditorFor会抛出错误 - 为什么?

时间:2013-06-29 00:40:11

标签: asp.net-mvc html-helper

我在视图中有以下代码:

@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 个答案:

答案 0 :(得分:1)

EditorFor仅适用于没有自定义模板的字符串。

您需要在路径Int32上创建~/Views/Shared/EditorTemplates/Int32.cshtml模板才能实现这一目标。

如果您不想为Int32类型创建模板,请使用可以正常使用的TextBoxFor