Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在Html.EditorFor()中传递TimeSpan_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 在Html.EditorFor()中传递TimeSpan

Asp.net mvc 在Html.EditorFor()中传递TimeSpan,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我遇到了一个非常奇怪的例外情况。 我有一个带有TimeSpan属性的模型,并尝试创建一个视图 public class Clock { [DataType(DataType.Time)] [DisplayFormat(DataFormatString = @"{0:hh\:mm}", ApplyFormatInEditMode = true)] public TimeSpan Time {get;set;} } @Html.EditorFor(model =>

我遇到了一个非常奇怪的例外情况。
我有一个带有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

我曾在另一个项目中使用过这种技术,它是有效的,但在我当前的项目中它失败了,我不知道我的想法。可能我遗漏了什么或者什么东西被禁用了。

我的答案与其说是一个解决方案,不如说是一个解决方案,因为我不确定异常的原因,但对我来说,如果我从TFS进行干净的签出,它会起作用。

我的答案与其说是一个解决方案,不如说是一个解决方案,因为我不确定异常的原因,但对我来说,如果我从TFS进行干净的签出,它就可以工作。

当使用
@Html.EditorFor()
时,MVC首先查看是否可以使用默认约定找到模板(或者您可能在自定义
视图引擎中定义的模板)

如果它找不到一个——在您的例子中,您没有定义一个——那么它将使用内置模板。在
TimeSpan
的情况下,它试图为
String
类型使用模板,这导致了您看到的异常


您需要显式定义一个
TimeSpan.cshtml
模板,使用
@model TimeSpan

键入。当使用
@Html.EditorFor()
时,MVC首先查看是否可以使用默认约定找到模板(或者您在自定义
视图引擎中定义的模板)

如果它找不到一个——在您的例子中,您没有定义一个——那么它将使用内置模板。在
TimeSpan
的情况下,它试图为
String
类型使用模板,这导致了您看到的异常


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

键入编辑器模板是什么样子的?在我以前的项目中,我只有DateTime.cshtml模板,它可以工作。所以我还没有为TimeSpan创建编辑器模板。那就是你的问题了。它可能使用默认模板,作为编辑器模板,默认情况下,使用您根据名称设置的任何自定义模板,除非您通过指定模板名称进行覆盖。所以你应该创建一个TimeSpan编辑器模板来处理这种类型的属性。然后我不明白为什么它在另一个项目中工作。如果没有看到该项目的代码,我们也很难知道。但我猜测它不是TimeSpan类型,或者您定义了TimeSpan的编辑器模板,或者您没有使用编辑器模板。您当前的项目中是否有其他编辑器模板?编辑器模板是什么样子的?在我以前的项目中,我只有DateTime.cshtml模板,它可以工作。所以我还没有为TimeSpan创建编辑器模板。那就是你的问题了。它可能使用默认模板,作为编辑器模板,默认情况下,使用您根据名称设置的任何自定义模板,除非您通过指定模板名称进行覆盖。所以你应该创建一个TimeSpan编辑器模板来处理这种类型的属性。然后我不明白为什么它在另一个项目中工作。如果没有看到该项目的代码,我们也很难知道。但我猜测它不是TimeSpan类型,或者您定义了TimeSpan的编辑器模板,或者您没有使用编辑器模板。当前项目中是否有其他编辑器模板?