asp.net mvc中的Dynamic(ExpandoObject)与静态类型(Model)

时间:2011-06-11 17:45:51

标签: asp.net-mvc c#-4.0 dynamic expandoobject

asp.net mvc中的动态与静态类型

汽车比摩托车好吗?这一切都取决于您使用它的场景。 在不知道情景的情况下,无法做出决定!

对于某些问题/情况,动态类型是否比静态类型更好。

在这种情况下

我需要在调用BaseController的OnException()方法时显示视图。 这是一次性的事情,我一次显示错误页面,而不是黄色死亡屏幕。

假设我需要在视图上显示ErrorMessage和Stacktrace。 因为这是一次性的事情,使用动态并不比为此创建错误模型更好。

       dynamic obj = new ExpandoObject();
       obj.ErrorMessage = "message";
       obj.StackTrace = "bla bla bal";
       return to view.

最佳做法是什么? 谢谢你的回复。

1 个答案:

答案 0 :(得分:1)

“对于某些问题/情况,动态类型优于静态类型。”

当然。

“假设我需要在视图上显示ErrorMessage和Stacktrace。因为这是一次性的事情,使用动态并不比为此创建错误模型更好。”

在这种情况下,您通常会有一个可以带有错误的视图模型。有时我使用基本视图模型类:

public class ViewModelBase
{
      public string ErrorMessage { get; set; }

}

我经常把错误放在TempData中:

TempData["Errors"] = "";