1

我遇到了一个非常奇怪的异常。
我有一个具有 TimeSpan 属性的模型并尝试创建一个视图。

public class Clock {

    [DataType(DataType.Time)]
    [DisplayFormat(DataFormatString = @"{0:hh\:mm}", ApplyFormatInEditMode = true)]
    public TimeSpan Time {get;set;}
}

@Html.EditorFor(model => model.Time)

这就是我得到的

[InvalidOperationException: The model item passed into the dictionary is of type 'System.TimeSpan', but this dictionary requires a model item of type 'System.String'.]
System.Web.Mvc.ViewDataDictionary`1.SetModel(Object value) +321071
System.Web.Mvc.ViewDataDictionary..ctor(ViewDataDictionary dictionary) +377
System.Web.Mvc.WebViewPage`1.SetViewData(ViewDataDictionary viewData) +48

我在另一个项目中使用了这种技术并且它有效,但在我当前的项目中它失败了,我不知道我的。也许我错过了某些东西或某些东西被禁用了。

4

2 回答 2

1

使用 时@Html.EditorFor(),MVC 首先查看是否可以使用默认约定(或者您可能在 custom 中定义的约定ViewEngine)找到模板。

如果它找不到一个——在你的情况下,你没有定义一个——然后它使用内置模板。在 的情况下TimeSpan,它试图对一个String类型使用模板,这导致了您看到的异常。

您将需要明确定义一个TimeSpan.cshtml模板,使用@model TimeSpan.

于 2016-03-15T15:53:04.937 回答
0

我的回答与其说是一种解决方法,不如说是一种解决方法,因为我不确定异常的原因,但对我来说,如果我从 TFS 进行干净的结帐,它就会起作用。

于 2013-10-11T13:49:49.137 回答