我有一个MVC用户控件,具有以下基本结构:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Decimal>" %>
<%= Math.Round(Model) %>
Run Code Online (Sandbox Code Playgroud)
我使用它时会出现此错误消息:
编译器错误消息:CS0452:类型'decimal'必须是引用类型才能在泛型类型或方法'System.Web.Mvc.ViewUserControl'中将其用作参数'TModel'
有没有办法让这个工作(以某种方式欺骗框架将Decimal作为参考类型处理?)或者我正在尝试做的只是根本错误?
我建议你在ViewModel中包装值类型.这将在未来允许一些灵活性(可能需要也可能不需要).
public class MyUserControlViewModel
{
public Decimal MyValue { get; private set; }
public MyUserControlViewModel(Decimal dec)
{
MyValue = dec;
}
}
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyUserControlViewModel>" %>
<%= Math.Round(Model.MyValue) %>
Run Code Online (Sandbox Code Playgroud)
小智 5
如果你想要一个快速的方法,不必包装成课,使用它
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Nullable<Decimal>>" %>
Run Code Online (Sandbox Code Playgroud)
你也可以考虑使用
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
Run Code Online (Sandbox Code Playgroud)
并通过代码验证
| 归档时间: |
|
| 查看次数: |
3551 次 |
| 最近记录: |