有没有办法使用这样的东西:System.Web.Mvc.ViewUserControl<DateTime>
?我得到一个异常,该类型是值类型,而不是引用类型。解决此问题的正确方法是什么?谢谢。
编辑
我想要完成的是拥有一个控件DateTime
来呈现日历。我想DateTime
使用 MVC 的“点表示法”从我的 ViewData 中传递。
编辑 2
我听说/看到一些 MvcContrib 项目可能具有此功能,但我似乎无法再次找到它。
有没有办法使用这样的东西:System.Web.Mvc.ViewUserControl<DateTime>
?我得到一个异常,该类型是值类型,而不是引用类型。解决此问题的正确方法是什么?谢谢。
编辑
我想要完成的是拥有一个控件DateTime
来呈现日历。我想DateTime
使用 MVC 的“点表示法”从我的 ViewData 中传递。
编辑 2
我听说/看到一些 MvcContrib 项目可能具有此功能,但我似乎无法再次找到它。
没有办法解决这个问题 - 只有解决方法。您不能将值类型作为 TModel 包含在 ViewUserControl 中,因为 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
}
在您的视图中,只需参考 DateTime 属性即可访问 DateTime。
<%=Model.DateTime%>