有没有办法使用这样的东西:System.Web.Mvc.ViewUserControl<DateTime>
?我得到一个例外,类型是值类型,而不是引用类型。解决这个问题的正确方法是什么?感谢。
修改
我想要实现的是拥有一个控件,它需要DateTime
来呈现日历。我想使用MVC的“点符号”从我的ViewData传入DateTime
。
修改2
我听说/看到一些MvcContrib项目可能具备此功能,但我似乎无法再找到它。
答案 0 :(得分:4)
无法解决此问题 - 只有解决方法。您不能在ViewUserControl中将值类型包含为TModel,因为TModel具有作为引用类型的约束。
简单的解决方法是将您的值类型包装在类中作为模型。
class MyModel {
public DateTime? DateTime {get;set;}
}
通过定义您自己的类,如上面的MyModel,您现在可以将DateTime传递给您的视图,如此
ActionResult MyActionMethod() {
var db = new MyDataContext();
var dbThing = db.Things.Where(t=> t.DateTimeProperty>=DateTime.Now).First();
return View("myView", new MyModel{DateTime = dbThing.DateTimeProperty});
}
您的视图当然需要将MyModel定义为模型类型,如此
public partial class MyView:ViewUserControl<MyModel> {
//snip
}
在View中,只需引用DateTime属性即可访问DateTime。
<%=Model.DateTime%>