我有一个非常奇怪的例外 我有一个带有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
我在另一个项目中使用过这种技术并且它可以工作,但是在我当前的项目中它失败了,我不知道我的。也许我错过了某些东西或某些东西被禁用了。
答案 0 :(得分:1)
使用@Html.EditorFor()
时,MVC首先查看是否可以使用默认约定(或您在自定义ViewEngine
中定义的约定)找到模板。
如果找不到 - 而在您的情况下,您没有定义 - 那么它使用内置模板。在TimeSpan
的情况下,它尝试使用String
类型的模板,这导致您看到的异常。
您需要明确定义TimeSpan.cshtml
模板,并使用@model TimeSpan
键入。
答案 1 :(得分:0)
我的答案不是作为一种解决方法的答案,因为我不确定异常的原因,但对我而言,如果我从TFS进行干净的结账,它就有效。