Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.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
C# ASP.NET MVC3 Html.EditorFor和对象类型的属性_C#_Asp.net Mvc 3 - Fatal编程技术网

C# ASP.NET MVC3 Html.EditorFor和对象类型的属性

C# ASP.NET MVC3 Html.EditorFor和对象类型的属性,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我正在MVC3应用程序中创建用户控件。我的视图模型如下所示: public class MyViewModel { public object Value { get; set; } } Value属性可以是int、string或bool,因此我不能使用[DataType]属性 创建视图模型时: var viewModel = new MyViewModel { Value = "" }; 或 我假设此代码: <%: Html.EditorFor(p => p.Value

我正在MVC3应用程序中创建用户控件。我的视图模型如下所示:

public class MyViewModel
{
    public object Value { get; set; }
}
Value属性可以是int、string或bool,因此我不能使用
[DataType]
属性

创建视图模型时:

var viewModel = new MyViewModel { Value = "" };

我假设此代码:

<%: Html.EditorFor(p => p.Value) %>
Html.EditorFor
呈现复选框输入:


我做了一些研究,但目前还没有找到解决方案。

不是一个直接的答案,但你不能让你的ViewModel变得通用:

public class MyViewModel<T>
{
    public T Value { get; set; }
}
公共类MyViewModel
{
公共T值{get;set;}
}
通过这种方式,Html助手方法可以在编译时准确地解析类型值以及要呈现的编辑器。

我使用了:

 <%: Html.Editor("Value") %>

而不是:

 <%: Html.EditorFor(p => p.Value) %>
p.Value)%%>

一切都很好!正在为空字符串或int值呈现文本框。表达式
p=>p.Value
有什么问题?

这是一个简化的示例。在真实的应用程序中,我有泛型-就像你说的。但是我需要能够创建
MyViewModel
的列表。正如您所知,我无法创建泛型类型列表,因此我创建了接口(
IMyViewModel
),其中包含type object的属性
 <%: Html.Editor("Value") %>
 <%: Html.EditorFor(p => p.Value) %>