0

有没有办法使用这样的东西:System.Web.Mvc.ViewUserControl<DateTime>?我得到一个异常,该类型是值类型,而不是引用类型。解决此问题的正确方法是什么?谢谢。

编辑

我想要完成的是拥有一个控件DateTime来呈现日历。我想DateTime使用 MVC 的“点表示法”从我的 ViewData 中传递。

编辑 2

我听说/看到一些 MvcContrib 项目可能具有此功能,但我似乎无法再次找到它。

4

1 回答 1

4

没有办法解决这个问题 - 只有解决方法。您不能将值类型作为 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%>
于 2009-03-12T00:52:20.530 回答