ASP.NET MVC3 Html.EditorFor和object类型的属性

时间:2011-07-26 21:52:10

标签: c# asp.net-mvc-3

我正在MVC3应用程序中创建用户控件。我的视图模型看起来像这样:

public class MyViewModel
{
    public object Value { get; set; }
}

Value属性可以是int,string或bool,因此我无法使用[DataType]属性。

创建视图模型时:

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

var viewModel = new MyViewModel { Value = 1 };

我假设这段代码:

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

应呈现textbox类型的HTML输入。不幸的是,没有任何东西被渲染出来。

当我使用bool值或某些非空字符串时,一切正常。这是一个例子:

var viewModel = new MyViewModel { Value = true };

Html.EditorFor呈现复选框输入:

Value property of type bool

我做了一些研究,但是现在我没有找到解决方案。

2 个答案:

答案 0 :(得分:1)

不是直接的答案,但你不能只是让你的ViewModel通用:

public class MyViewModel<T>
{
    public T Value { get; set; }
}

这样,Html帮助器方法可以在编译时确切地解析什么类型的值,以及要呈现的编辑器。

答案 1 :(得分:1)

我用过:

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

而不是:

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

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