繁体   English   中英

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

[英]ASP.NET MVC3 Html.EditorFor and property of type object

我正在 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) %>

应该呈现文本框类型的 HTML 输入。 不幸的是,没有任何东西被渲染。

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

var viewModel = new MyViewModel { Value = true };

Html.EditorFor呈现复选框输入:

类型 bool 的值属性

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

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

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

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

我用了:

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

代替:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM